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


cjw931027@gmail.com (noob)

學校 : 北京大学
編號 : 150971
來源 : [1.160.5.51]
最後登入時間 :
2025-05-26 11:31:04

#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.12.66.21]
最後登入時間 :
2025-04-20 17:19:22

#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,所以操作順序要顛倒過來,從最後一個操作往回計算