给出一个n*m 的整数矩阵,请你把这个矩阵顺时针旋转90o 以后输出。
输入格式
第一行输入两个整数n,m(1<=n,m<=200) ,用空格隔开。
接下来 行,每行输入m个整数,表示输入的矩阵。
矩阵中元素都是 int 范围内的整数。
输出格式
输入m行,每行n个空格隔开的整数,表示旋转以后的矩阵。
注意:每行末尾不能输出多余的空格。
样例输入
3 4
-1 3 6 3
7 7 9 1
10 3 4 6
样例输出
10 7 -1
3 7 3
4 9 6
6 1 3
解:
旋转矩阵,有三种方式。
1.给一个新矩阵,按要求赋值,空间200x200开销不小。
2.一排一排旋转,只需要一排临时变量即可,但有些复杂。
3.元素一个个交换,最重要的是找元素交换规律。
个人认为方法三可行性更高,经分析矩阵整体先做个上下反转,再以主对角线做个对称操作,就可实现顺时针旋转90o。
需要注意的是通过主对角线对称前,将矩阵补成正方形,这样操作方便些;输出是时也要留意矩阵范围。
(不旋转矩阵,而选择更改输出方式也挺妙的)
代码:
#include <iostream>
using namespace std;
int main(int argc, char *argv[]) {
int n,m,a[205][205