图像旋转
Forgotten_freopen · · 题解
开篇话
这道题乍一看还挺难的,但是发现方法后就好办了。
简便做法
首先开一个二维数组 我的前教练告诉我,数组开得比数据范围大 )。
这道题让我们将读入的二维数组(即图像)顺时针旋转
我们设样例的输入为:
a[1][1] a[1][2] a[1][3]
a[2][1] a[2][2] a[2][3]
a[3][1] a[3][2] a[3][3]
那么,想要得到样例输出的话,就要:
1.每次先将图像做左右对称处理,得到下图↓
a[1][3] a[1][2] a[1][1]
a[2][3] a[2][2] a[2][1]
a[3][3] a[3][2] a[3][1]
2.再将
a[3][1] a[2][1] a[1][1]
a[3][2] a[2][2] a[1][2]
a[3][3] a[2][3] a[1][3]
3.用代码实现,就是:
for(i = 1; i <= m; i++){
for(j = n; j >= 1; j--) cout<< a[j][i] << " " ;
cout<< endl;
}
AC code
#include <bits/stdc++.h>//万能头文件(但不是彻底万能的)
using namespace std;
int m,n,a[105][105],i,j;
int main(){
cin >> n >> m;
for(i = 1; i <= n; i++)
for(j = 1; j <= m; j++) cin >> a[i][j];//读入二维数组里的每一个元素。
for(i = 1; i <= m; i++){
for(j = n; j >= 1; j--) cout<< a[j][i] << " " ;//将图像顺时针旋转 90 度输出。
cout<< endl;
}
return 0;
}