Acwing 3174. 旋转
题目链接
解题思路:
步骤:
- 列出输出的框架(几行几列)
for(int i = 0; i < m; i ++)
for(int j = 0; j < n; j ++)
-
遍历列:
cout<<jpg[j][i]<<" ";
-
倒序遍历列:所以第二重循环
for(int j = n-1; j >= 0; j--)
证明:为什么这么做?
-
按行遍历数组:行不变,列遍历
按列遍历数组:列不变,行遍历 -
两重循环的特性:
第一重循环每遍历一个,第二重循环就会遍历一遍
在第二重循环的循环体里面,此时第一重循环的变量是不变的,第二重循环的变量遍历一遍
符合第一点所说,所以使用双重循环遍历数组 -
所以可得
cout<<jpg[j][i]<<" ";
是用来遍历列的。
C++代码
#include<iostream>
#include<vector>
using namespace std;
const int N = 105;
int jpg[N][N];
vector<vector<int>> res;
int main()
{
int n,m;
cin>>n>>m;
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
cin>>jpg[i][j];
for(int i = 0 ; i < m;i ++)
{
for(int j = n-1; j >= 0; j--)
cout<<jpg[j][i]<<" ";
cout<<endl;
}
return 0;
}
姐妹题:逆时针旋转90°