2022.11.23 PM 03:40 by CBJ
來源 : https://zerojudge.tw/ShowProblem?problemid=a015 出題者 : Zerojudge 標籤 : 陣列 難易度 : 2
解題想法 : 題目輸入會有行數和列數,以下通稱為r和c。 以下以r=2,c=3的範例測資為例。 (輸入) (所求) 3 1 2 3 8 8 5 4 => 1 5 2 4 透過觀察可以看到,所求的陣列第一排會是由輸入陣列的每行第一個所組成,第二行會是由輸入陣列的每行第二個所組成... 因此我們可以得出以下公式 : *新陣列的第i行會由輸入陣列每列的第i個數字所組成* 所以我們每次只要分別取出"每行"的第1個數字丟到新陣列第1行,"每行"第2個數字丟到新陣列第2行....以此類推即可完成新陣列,實作上可以真的開一個新陣列來存,也可以直接就把答案輸出。
//C language
//solution link(含註解):
#include <stdio.h>
int main()
{
int r,c;
while(scanf("%d%d",&r,&c)!=EOF){
int matrix[105][105]={0};
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
scanf("%d",&matrix[i][j]);
}
}
for(int i=0;i<c;i++){
for(int j=0;j<r;j++){
printf("%d ",matrix[j][i]); //注意是 [j][i] 不是 [i][j] !
}
printf("\n");
}
}
return 0;
}

//C++ language
//solution link(含註解):
#include<iostream>
#include<vector>
using namespace std;
int main(){
int r,c;
while(cin>>r>>c){
vector<vector<int>>matrix(105,vector<int>(105));
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
cin>>matrix[i][j];
}
}
for(int i=0;i<c;i++){
for(int j=0;j<r;j++){
cout<<matrix[j][i]<<" "; //注意是 [j][i] 不是 [i][j] !
}
cout<<"\n";
}
}
return 0;
}

## Python language
## solution link(含註解):
from sys import stdin
for read in stdin:
r,c=map(int,read.rstrip().split())
matrix=[]
for i in range(r):
matrix.append([int(x) for x in input().split()])
for i in range(c):
for mat in matrix:
print(mat[i],end=' ')
print()
