首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >矩阵操作试题(C++/Python)——矩阵元素逆时针旋转90度(升级版)

矩阵操作试题(C++/Python)——矩阵元素逆时针旋转90度(升级版)

作者头像
莫斯
发布2020-09-10 10:43:17
发布2020-09-10 10:43:17
1.2K0
举报
文章被收录于专栏:备份备份

0. 前言

现主要实现不使用额外空间完成矩阵元素逆时针旋转90度。

给出一个矩阵,得到他的转置矩阵,输入以及要求输出如下: e.g.0.1 示例1 3*3矩阵

代码语言:javascript
复制
Input
1    2    3
4    5    6
7    8    9

Output:
3 	6	9 
2	5	8 
1	4	7 

e.g.0.2 示例2 4*4矩阵

代码语言:javascript
复制
Input:
1    2    3    4    
5    6    7    8
9    10   11   12
13   14   15   16

Output:
4	8	12	16 
3	7	11	15 
2	6	10	14 
1	5	9	13

1. 程序C++版

Code.1.1 示例程序C++版

代码语言:javascript
复制
#include <iostream>
using namespace std; 
#define R 4 
#define C 4 

void reverseColumns(int arr[R][C]) 
{ 
	for (int i = 0; i < C; i++) 
		for (int j = 0, k = C - 1; j < k; j++, k--) 
			swap(arr[j][i], arr[k][i]); 
} 

void transpose(int arr[R][C]) 
{ 
	for (int i = 0; i < R; i++) 
		for (int j = i; j < C; j++) 
			swap(arr[i][j], arr[j][i]); 
} 

void printMatrix(int arr[R][C]) 
{ 
	for (int i = 0; i < R; i++) { 
		for (int j = 0; j < C; j++) 
			cout << arr[i][j] << " "; 
		cout << '\n'; 
	} 
} 
 
void rotate90(int arr[R][C]) 
{ 
	transpose(arr); 
	reverseColumns(arr); 
} 

int main() 
{ 
	int arr[R][C] = { { 1, 2, 3, 4 }, 
					{ 5, 6, 7, 8 }, 
					{ 9, 10, 11, 12 }, 
					{ 13, 14, 15, 16 } }; 
	rotate90(arr); 
	printMatrix(arr); 
	return 0; 
} 

1. 程序Python版

Code.1.1 示例程序Python版

代码语言:javascript
复制
R = 4
C = 4

def reverseColumns(arr): 
	for i in range(C): 
		j = 0
		k = C-1
		while j < k: 
			t = arr[j][i] 
			arr[j][i] = arr[k][i] 
			arr[k][i] = t 
			j += 1
			k -= 1

def transpose(arr): 
	for i in range(R): 
		for j in range(i, C): 
			t = arr[i][j] 
			arr[i][j] = arr[j][i] 
			arr[j][i] = t 

def printMatrix(arr): 
	for i in range(R): 
		for j in range(C): 
			print(str(arr[i][j]), end =" ") 
		print() 

def rotate90(arr): 
	transpose(arr) 
	reverseColumns(arr) 

arr = [[1, 2, 3, 4], 
		[5, 6, 7, 8], 
		[9, 10, 11, 12], 
		[13, 14, 15, 16] 
	]; 
rotate90(arr) 
printMatrix(arr) 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/12/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0. 前言
  • 1. 程序C++版
  • 1. 程序Python版
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档