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;
}