北大OJ百练——4075:矩阵旋转(C语言)

百练的这道题很简单,通过率也达到了86%,所以我也就来贴个代码了。。。下面是题目:


不过还是说一下我的思路:

这道题对一个新来说,可能是会和矩阵的转置相混淆,这题并不是要我们去求矩阵的转置。

这题,我们只需要先得到这个矩阵,然后再按列的从小到大,行的从大到小来输出即可。顺便说一句,这是在做题,只要去把原矩阵旋转输出就行了,而在以后的软件程序中,我们最好还是用一个相同大小的矩阵来保存一份。指不定在程序的哪个地方还会用到原矩阵或是旋转后的矩阵。废话不多说,贴代码:

#include <stdio.h>
#define MAXN 100

int main()
{
	int m, n;
	int i, j;
	int mat[MAXN][MAXN];

	scanf("%d", &m);
	while(m--)
	{
		// 输入行和列均为n的n阶矩阵
		scanf("%d", &n);
		for(i = 0; i < n; ++i)
		{
			for(j = 0; j < n; ++j)
			{
				scanf("%d", &mat[i][j]);
			}
		}

		// 输出旋转后的矩阵
		for(i = 0; i < n; ++i)
		{
			for(j = n - 1; j >= 0; --j)
			{
				printf("%d", mat[j][i]);
				if(j == 0) printf("
");
				else printf(" ");
			}
		}
	}
	return 0;
}

原题的连接:4075:矩阵旋转


原文地址:https://www.cnblogs.com/fengju/p/6336173.html