天天看點

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