CCF里面有一道题,让你把图像旋转90度,我用C语言可以简单实现。
样例输入
2 3
1 5 3
3 2 4
样例输出
3 4
5 2
1 3
样例输入
2 3
1 5 3
3 2 4
样例输出
3 4
5 2
1 3
样例输入
2 3
1 5 3
3 2 4
样例输出
3 4
5 2
1 3
样例输入
2 3
1 5 3
3 2 4
样例输出
3 4
5 2
1 3
样例输入
2 3
1 5 3
3 2 4
样例输出
3 4
5 2
1 3
样例输入2 3
1 5 3
3 2 4
样例输出
3 4
5 2
1 3
方法很简单,首先把原来的矩阵转置,这是第一步,然后再把转置后的每一列的每个元素按行逆置即可。
比如上面矩阵转置后为:
1 3
5 2
3 4
然后每一列逆置即可。
具体代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,m,n,a;
scanf("%d%d",&m,&n);
int A[m][n],B[n][m];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
scanf("%d",&A[i][j]);
}
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
B[i][j]=A[j][i];
} //转置
for(j=0;j<m;j++)
{
for(i=0;i<n/2;i++)
{
a=B[n-i-1][j];
B[n-i-1][j]=B[i][j];
B[i][j]=a;
}
} // 逆置
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d ",B[i][j]);
}
printf("\n");
}// 输出
return 0;
}