LuoguB2106 矩阵转置 题解

Content

给定一个 \(n\times m\) 的矩阵 \(A\),求其转置 \(A^\text T\)

数据范围:\(1\leqslant n,m\leqslant 100\)

Solution

由于本题并没有提到矩阵的转置是个什么玩意,因此在这里先介绍一下。

假设这里有个 \(n\times m\) 的矩阵 \(A\),然后我们将第 \(i\) 行第 \(j\) 列的元素变成新矩阵中的第 \(j\) 行第 \(i\) 列的元素,所得到的新的 \(m\times n\) 矩阵就是我们的转置矩阵。

但是在本题中,我们由于只需要输出这个转置矩阵,因此并不需要真的转置,只需要先循环 \(j\) 再循环 \(i\) 输出就可以达到转置的效果了。具体原因请再仔细阅读上一段对于矩阵转置的定义。

Code

#include <cstdio>
using namespace std;

int n, m, a[107][107];

int main() {
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; ++i) for(int j = 1; j <= m; ++j) scanf("%d", &a[i][j]);
    for(int j = 1; j <= m; ++j) {for(int i = 1; i <= n; ++i) printf("%d ", a[i][j]); puts("");}
    return 0;
}
posted @ 2021-12-15 21:47  Eason_AC  阅读(209)  评论(0)    收藏  举报