s143 - 矩陣的翻轉 (單筆測資版)
題目描述
題目要求讀取一個 m x n 的矩陣,並將其轉置(行變列,列變行)後輸出。
解題思路
此題的核心是矩陣轉置。轉置矩陣的過程,就是將原始矩陣的行索引和列索引互換。具體來說,原始矩陣 iarr[i][j] 的元素,在轉置後的矩陣 ibrr[j][i] 中。程式首先讀取矩陣的行數和列數,然後讀取矩陣的元素,最後建立一個新的矩陣,並將原始矩陣的元素按照轉置規則複製到新矩陣中,最後輸出轉置後的矩陣。
複雜度分析
- 時間複雜度: O(m*n),其中 m 是矩陣的行數,n 是矩陣的列數。因為需要遍歷原始矩陣的所有元素來進行轉置。
- 空間複雜度: O(m*n),因為需要建立一個新的矩陣
ibrr來儲存轉置後的結果。
程式碼
#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;
}
}
}