# Array# Matrix# Transpose

s143 - 矩陣的翻轉 (單筆測資版)

🔗 前往 ZeroJudge 原題

題目描述

題目要求讀取一個 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;
		}
		
	}
	
}

Discussion