计蒜客矩阵旋转
这个题规定是nm的矩阵旋转,而不是nn的矩阵旋转
对于n*n旋转90度,逆时针,现将主对角线(\)两侧的数据交换,然后将a[i][j]与a[n-i-1][j]数据交换即可(顺指针则是将副对角线两侧数据交换,后面的数据交换不变)
而这个题中,观察旋转之后的矩阵发现,旋转之后的元素的列数等于原来的行数,现在的矩阵输出的元素,第i行的数据是原来矩阵的第i列对应的元素,从第一列开始的元素是原来矩阵从最后一行的元素开始的元素,故此按照规律,改变一下输出顺序即可完成矩阵的旋转
#include<bits/stdc++.h>
#include<cmath>
using namespace std;
int main(void)
{
int n,m;
cin>>m>>n;
int a[n+100][m+100];
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
cin>>a[i][j];
}
}
for(int k=0;k<n;k++)
{
int t=m-1;
for( ;t>=0;t--)
{
cout<<a[t][k];
if(t!=0)
cout<<" ";
}
cout<<endl;
}
return 0;
}