【九度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;
}