一、题目:
给出一个n*m的整数矩阵,请你把这个矩阵顺时针旋转90°以后输出。
输入格式:
第一行输入两个整数n,m(1<=n,m<=200).用空格隔开。接下来n行,每行输入m个整数,表示输入的矩阵。矩阵中的元素都是int范围内的整数。
输出格式:
输出m行,每行n个空格隔开的整数,表示旋转以后的矩阵。注意:每行末尾不能输出多余的空格。
样例输入和输出:
二、思路
首先不能被题目带偏,题目要求旋转90°,我们不可能交换二维数组中元素的值,那样做太麻烦,而且极易出错。
因此我们换一个角度思考,旋转90°,得到一个新的矩阵,我们可以改变二维数组的输出方式,使之成为我们想要的结果。
经观察得,经旋转后的矩阵的每一列都是原来矩阵行的倒序,所以我们可以换个方式输出二维数组里面的元素,而不是改变二维数组的值!
三、源码
#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; int arr[205][205]={0}; //做这种题,不能被带偏,本题将矩阵旋转90,不能将矩阵内的数字进行转换,应该以不同形式去输出样例结果 int main() { int row, lie; cin >> row >> lie; for (int j=1;j<=row;j++) { for (int i=1;i<=lie;i++) { cin >> arr[j][i]; } } for (int n=1;n<=lie;n++) { for (int m=0;m<row;m++) { cout << arr[row-m][n]<<' ';//cout输出空格形式 } cout << endl; } return 0; }