a015 - 矩陣的翻轉
題目描述
題目要求讀取一個 m x n 的矩陣,並輸出其轉置矩陣,即行與列互換後的矩陣。輸入包含多組測試資料,每組資料先給定矩陣的列數和行數,然後給定矩陣的元素。
解題思路
此題的核心是矩陣轉置。轉置矩陣的思路是將原始矩陣的第 i 行第 j 列的元素,放到轉置矩陣的第 j 行第 i 列。因此,需要創建一個新的矩陣,其維度為 n x m,然後遍歷原始矩陣,將元素複製到轉置矩陣的相應位置。
複雜度分析
- 時間複雜度: O(m*n),其中 m 是矩陣的列數,n 是矩陣的行數。需要遍歷原始矩陣的所有元素。
- 空間複雜度: O(m*n),需要額外空間來儲存轉置矩陣。
程式碼
#include <iostream>
using namespace std;
int main (){
int a=0;
int b=0;
int c=0;
while(cin >> a >> b){
int iarr[a][b];
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
cin >> iarr[i][j];
//3 1 2
//8 5 4
//<2 3>
}
}
int ibrr[b][a];//<3 2>
for(int i=0;i<b;i++){
for(int j=0;j<a;j++){
ibrr[i][j]=iarr[j][i];
cout << ibrr[i][j] << " ";
}
cout << endl;
}
}
}