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

posted @ 2017-03-19 15:37  负雪明烛  阅读(62)  评论(0编辑  收藏  举报