📅  最后修改于: 2023-12-03 15:11:14.660000             🧑  作者: Mango
对于一个 $m \times n$ 的矩阵 $A$,其转置矩阵 $A^T$ 是一个 $n \times m$ 的矩阵,且满足:
$$ (A^T){i,j} = A{j,i} \quad (1 \leq i \leq n, 1 \leq j \leq m) $$
下面提供一份 C++ 程序,可以实现查找矩阵的转置。
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 100;
int mat[MAXN][MAXN];
int main() {
int m, n;
memset(mat,0,sizeof mat); // 将矩阵置零
cin >> m >> n; // 输入矩阵的行数和列数
for (int i = 1; i <= m; ++i) {
for (int j = 1; j <= n; ++j) {
cin >> mat[i][j]; // 逐一输入矩阵的元素
}
}
for (int j = 1; j <= n; ++j) {
for (int i = 1; i <= m; ++i) {
cout << mat[i][j]; // 输出转置矩阵的元素
if (i != m) cout << ' ';
}
cout << '\n';
}
return 0;
}
该程序中,首先使用 memset
函数将矩阵 mat
中的元素全部置为零。然后,输入矩阵的行数和列数。接着,逐一输入矩阵的元素。最后,输出转置矩阵的元素。
转置矩阵的输出过程与原矩阵类似,只不过先输出原矩阵的第一列,再输出原矩阵的第二列……以此类推,用一个外部循环遍历列,内部循环遍历行,即可输出转置矩阵的所有元素。