求任意大小矩阵的转置矩阵

  m 行 n 列矩阵转置后为 n 行 m 列。

C++代码如下:

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main() {
 5     int m, n;   //原始矩阵 m行n列
 6     cin >> m>>n;
 7     int **ptr;  //指向指针的指针
 8     ptr= new int*[m];  //动态内存生成 m 个元素的数组,存储 m 行矩阵元素
 9     for (int i = 0; i < m; i++) {
10         ptr[i] = new int[n];  //每一行再生成 n 个元素,形成 m行n列
11     }
12 
13     for (int i = 0; i < m; i++) {
14         for (int j = 0; j < n; j++) {
15             cin >> ptr[i][j];
16         }
17     }    
18 
19     int **tr;   //转置矩阵
20     tr = new int*[n];  // n 行
21     for (int i = 0; i < n; i++) {
22         tr[i] = new int[m];   // m 列
23     }
24     for (int i = 0; i < m; i++) {   // 求转置
25         for (int j = 0; j < n; j++) {
26             tr[j][i] = ptr[i][j];
27         }
28     }
29     for (int i = 0; i < n; i++) {  // 打印转置后的矩阵
30         for (int j = 0; j < m; j++) {
31             cout << tr[i][j]<<' ';
32         }
33         cout << endl;
34     }
35     return 0;
36 }

猜你喜欢

转载自www.cnblogs.com/pgzhang/p/9102141.html