您的答案為: 9 1 0 正確答案為: 9 1 0
您的答案為: 9 9 3 7 7 正確答案為: 9 9 3 7 7
#include<iostream> #include<algorithm> using namespace std; int main(){ int r,c,m,x; cin>>r>>c>>m; int squ[m+1][max(r,c)+1][max(r,c)+1],mk[m+1],lastw = c,lasth = r,change;//[直][橫] for(int i=1;i<=r;i++){ for(int j=1;j<=c;j++){ cin>>squ[0][i][j]; } } for(int i=m;i>=1;i--) cin>>mk[i]; for(int i=1;i<=m;i++){ if(mk[i] == 0){ for(int j=1;j<=lastw;j++){//c = 上一個的寬 for(int k=1;k<=lasth;k++){//k = 上一個的高 squ[i][j][k] = squ[i-1][k][lastw+1-j];//new(2,1) = old(1,2) } } change = lastw; lastw = lasth; lasth = change; } else if(mk[i] == 1){ for(int j=1;j<=lasth;j++){ for(int k=1;k<=lastw;k++){ squ[i][j][k] = squ[i-1][lasth+1-j][k]; } } } } cout<<lasth<<' '<<lastw<<endl; for(int i=1;i<=lasth;i++){ for(int j=1;j<=lastw;j++){ if(j!=lastw||i!=lasth)cout<<squ[m][i][j]<<" "; else cout<<squ[m][i][j]; } cout<<endl; } }
if(j!=lastw||i!=lasth)cout<<squ[m][i][j]<<" ";問題出在
i!=lasth
,可以把空白改成其他符號,會看比較清楚
改了空格的問題,自己測正確,但不知道為什麼少一行
您只輸出了 6 行。
您只輸出了 4 行。
#include<iostream> #include<algorithm> using namespace std; int main(){ int r,c,m,x; cin>>r>>c>>m; int squ[m+1][max(r,c)+1][max(r,c)+1],mk[m+1],lastw = c,lasth = r,change;//[直][橫] for(int i=1;i<=r;i++){ for(int j=1;j<=c;j++){ cin>>squ[0][i][j]; } } for(int i=m;i>=1;i--) cin>>mk[i]; for(int i=1;i<=m;i++){ if(mk[i] == 0){ for(int j=1;j<=lastw;j++){//c = 上一個的寬 for(int k=1;k<=lasth;k++){//k = 上一個的高 squ[i][j][k] = squ[i-1][k][lastw+1-j];//new(2,1) = old(1,2) } } change = lastw; lastw = lasth; lasth = change; } else if(mk[i] == 1){ for(int j=1;j<=lasth;j++){ for(int k=1;k<=lastw;k++){ squ[i][j][k] = squ[i-1][lasth+1-j][k]; } } } } cout<<lasth<<' '<<lastw<<endl; for(int i=1;i<=lasth;i++){ for(int j=1;j<=lastw;j++){ if(j!=lastw)cout<<squ[m][i][j]<<" "; else cout<<squ[m][i][j]; } cout<<endl; } }