#27935: 旋轉變成左轉...請問旋轉哪裡錯誤?


cjw931027@gmail.com (JERRY)

學校 : 北京大学
編號 : 150971
來源 : [103.226.215.1]
最後登入時間 :
2023-09-14 21:26:12
b266. 矩陣翻轉 -- 2016 APCS 實作題第二題 | From: [114.136.222.180] | 發表日期 : 2021-11-06 17:09

#include <iostream>

#include <algorithm>

using namespace std;

int main() {

int gmax=-1;

int r,c,m,a;

while(cin>>r>>c>>m){

gmax=max(r,c);

int data[gmax][gmax];

int trans[gmax][gmax];

int s[m];

for(int i=0; i<r; i++){

for(int j=0; j<c; j++){

cin>>data[i][j];

}

}

 

for(int i=0; i<m; i++){

cin>>a;

s[i]=a;

}

 

for(int z=0; z<m; z++){

if(s[z]==1){

//翻轉

for(int i=0; i<r/2; i++){

for(int j=0; j<c; j++){

swap(data[i][j],data[r-i-1][j]);

}

}

}

 

else if(s[z]==0){

//旋轉

for(int i=0; i<r; i++){

for(int j=0; j<c; j++){

trans[i][j]=data[i][j];

}

}

 

for(int i=0; i<c; i++){

for(int j=0; j<r; j++){

data[i][j]=trans[j][c-(1+i)];

}

}

swap(r,c);

}

}

cout<<r<<" "<<c<<endl;

for(int i=0; i<r; i++){

for(int j=0; j<c; j++){

cout<<data[i][j]<<" ";

}

cout<<endl;

}

}

 

/*

3 2 2

1 2

3 4

5 6

0 1

*/

 

return 0;

}

 
#27937: Re:旋轉變成左轉...請問旋轉哪裡錯誤?


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
b266. 矩陣翻轉 -- 2016 APCS 實作題第二題 | From: [180.217.234.235] | 發表日期 : 2021-11-06 18:10

#include

#include

using namespace std;

int main() {

int gmax=-1;

int r,c,m,a;

while(cin>>r>>c>>m){

gmax=max(r,c);

int data[gmax][gmax];

int trans[gmax][gmax];

int s[m];

for(int i=0; i<r; i++){

for(int j=0; j<c; j++){

cin>>data[i][j];

}

}

 

for(int i=0; i<m; i++){

cin>>a;

s[i]=a;

}

 

for(int z=0; z<m; z++){

if(s[z]==1){

//翻轉

for(int i=0; i<r/2; i++){

for(int j=0; j<c; j++){

swap(data[i][j],data[r-i-1][j]);

}

}

}

 

else if(s[z]==0){

//旋轉

for(int i=0; i<r; i++){

for(int j=0; j<c; j++){

trans[i][j]=data[i][j];

}

}

 

for(int i=0; i<c; i++){

for(int j=0; j<r; j++){

data[i][j]=trans[j][c-(1+i)];

}

}

swap(r,c);

}

}

cout<<r<<" "<<c<<endl;

for(int i=0; i<r; i++){

for(int j=0; j<c; j++){

cout<<data[i][j]<<" ";

}

cout<<endl;

}

}

 

/*

3 2 2

1 2

3 4

5 6

0 1

*/

 

return 0;

}


題目給的是矩陣B,要輸出的是原本的矩陣A,所以操作順序要顛倒過來,從最後一個操作往回計算

 
ZeroJudge Forum