计蒜客矩阵旋转

计蒜客矩阵旋转
计蒜客矩阵旋转

这个题规定是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;
}