【九度OJ】题目1193:矩阵转置 解题报告
【九度OJ】题目1193:矩阵转置 解题报告
标签(空格分隔): 九度OJ
http://ac.jobdu.com/problem.php?pid=1193
题目描述:
输入一个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
Ways
题目中已经说了in-place了,可是本来也没打算用额外的数组。华科还真是喜欢数组的题目,基本每年都有,而且这个题和之前的那个对称矩阵简直一模一样,只多了一步交换元素。
这个题一遍A了。
#include<stdio.h>
int main() {
int n;
while (scanf("%d", &n) != EOF) {
int nums[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &nums[i][j]);
}
}
if (n != 1) {
int temp;
for (int i = 1; i < n; i++) {
for (int j = 0; j < i; j++) {
temp = nums[i][j];
nums[i][j] = nums[j][i];
nums[j][i] = temp;
}
}
}
for (int i = 0; i < n; i++) {
bool isFirst = true;
for (int j = 0; j < n; j++) {
if (isFirst) {
printf("%d", nums[i][j]);
isFirst = false;
} else {
printf(" %d", nums[i][j]);
}
}
printf("\n");
}
}
return 0;
}
Date
2017 年 3 月 19 日