时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:1673
解决:1132
题目描述:
-
输入一个N*N的矩阵,将其转置后输出。要求:不得使用任何数组(就地逆置)。
输入:
-
输入的第一行包括一个整数N,(1<=N<=100),代表矩阵的维数。
接下来的N行每行有N个整数,分别代表矩阵的元素。
输出:
-
可能有多组测试数据,对于每组数据,将输入的矩阵转置后输出。
样例输入:
-
3
1 2 3
4 5 6
7 8 9
样例输出:
-
1 4 7
2 5 8
3 6 9
来源:
-
2007年华中科技大学计算机研究生机试真题
思路:
投机取巧了,并没有逆置,而是直接打印的。
其实直接swap两个逆置的位置就行。
代码:
#include <stdio.h>
#define N 100
int main(void)
{
int n, i, j;
int a[N][N];
while (scanf("%d", &n) != EOF)
{
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
scanf("%d", &a[i][j]);
}
}
for(i=0; i<n; i++)
{
for(j=0; j<n-1; j++)
{
printf("%d ", a[j][i]);
}
printf("%d\n", a[j][i]);
}
}
return 0;
}
/**************************************************************
Problem: 1193
User: liangrx06
Language: C
Result: Accepted
Time:10 ms
Memory:912 kb
****************************************************************/