图像旋转
题目
旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。
计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。
输入
输入的第一行包含两个整数n, m,分别表示图像矩阵的行数和列数。
接下来n行每行包含m个整数,表示输入的图像。
输出
输出m行,每行包含n个整数,表示原始矩阵逆时针旋转90度后的矩阵。
输入样例
2 3
1 5 3
3 2 4
输出样例
3 4
5 2
1 3
提示
1 ≤ n, m ≤ 1,000,矩阵中的数都是不超过1000的非负整数。
参考代码
#include<stdio.h>
int main ()
{
int n,m;
scanf("%d %d",&n,&m);
int a[n][m];
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
}
}
int b[m][n];
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
b[i][j]=a[j][i];
}
}
for(int i=m-1;i>=0;i--)
{
for(int j=0;j<n;j++)
{
printf("%d ",b[i][j]);
}
printf("\n");
}
return 0;
}
我的思路:
图像逆时针旋转了90度,从2行3列变成了3行2列,我首先定义一个新的数组使它的第一行等于第一列(b[i] [j]=a[j] [i]),再把这个数组按照行倒着输出,最后得到逆时针旋转90度的矩阵。
如果还有更简便的方法欢迎留言,一起讨论一下。