# Matrix# Transpose# Array

a015 - 矩陣的翻轉

🔗 前往 ZeroJudge 原題

題目描述

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

Discussion