Description
某天,tianjiewang在搭火车,由于他搭车后容易晕车,突然他想到了矩阵的旋转。
给一个3*3的矩阵,矩阵旋转是按顺时针的
例如
1 2 3 7 4 1
4 5 6 转一次是 8 5 2
7 8 9 9 6 3
1 2 3 9 8 7
4 5 6 转两次是 6 5 4
7 8 9 3 2 1
问给一个n*m 的矩阵,问顺时针旋转k次后,求旋转后的矩阵是?(1<=n,m,k<=100),由于正在搭火车,tianjiewang的头很晕,
不知怎样做,现在他向你求助,你可以帮助他吗?
(出题人tianjiewang)
输入格式
第一行输入 n,m,k;
第二行到第n + 1行,每行有m 个数,每个数的取值范围是(1<=Aij<=100)
输出格式
输出n*m矩阵顺时针旋转k次后的矩阵
输入样例
3 3 1
1 2 3
4 5 6
7 8 9
输出样例
7 4 1
8 5 2
9 6 3
解题思路
水题。。
#include<stdio.h>
int main()
{
int n, m, k, i, l;
scanf("%d%d%d",&n, &m, &k);
int num[n][m];
for(i = 0; i < n; i ++)
for(l = 0;l < m; l ++)
scanf("%d",&num[i][l]);
if(k % 4 == 0)
{
for(i = 0; i < n; i ++)
{
for(l = 0; l < m; l ++)
printf("%d ",num[i][l]);
printf("\n");
}
}
else if(k % 4 == 1)
{
for(i = 0; i < m; i ++)
{
for(l = n - 1;l >= 0; l --)
printf("%d ",num[l][i]);
printf("\n");
}
}
else if(k % 4 == 2)
{
for(i = n - 1; i >= 0; i --)
{
for(l = m - 1; l >= 0; l --)
printf("%d ",num[i][l]);
printf("\n");
}
}
else
{
for(i = m - 1; i >= 0;i --)
{
for(l = 0; l < n; l ++)
printf("%d ",num[l][i]);
printf("\n");
}
}
return 0;
}