10 条题解
-
-1
#include<iostream> using namespace std; int n,q,a[110][110],c; void x1(){ int b[110]; for(int i=1;i<=n;i++)b[i]=a[1][i]; for(int i=1;i<n;i++){ for(int j=1;j<=n;j++)a[i][j]=a[i+1][j]; } for(int i=1;i<=n;i++)a[n][i]=b[i]; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++)printf("%d ",a[i][j]); cout<<endl; } cout<<endl; } void x2(){ int b[110]; for(int i=1;i<=n;i++)b[i]=a[n][i]; for(int i=n;i>=2;i--){ for(int j=1;j<=n;j++)a[i][j]=a[i-1][j]; } for(int i=1;i<=n;i++)a[1][i]=b[i]; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++)printf("%d ",a[i][j]); cout<<endl; } cout<<endl; } void x3(){ int b[110]; for(int i=1;i<=n;i++)b[i]=a[i][1]; for(int i=1;i<=n;i++){ for(int j=1;j<n;j++)a[i][j]=a[i][j+1]; } for(int i=1;i<=n;i++)a[i][n]=b[i]; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++)printf("%d ",a[i][j]); cout<<endl; } cout<<endl; } void x4(){ int b[110]; for(int i=1;i<=n;i++)b[i]=a[i][n]; for(int i=1;i<=n;i++){ for(int j=n;j>=2;j--)a[i][j]=a[i][j-1]; } for(int i=1;i<=n;i++)a[i][1]=b[i]; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++)printf("%d ",a[i][j]); cout<<endl; } cout<<endl; } void x5(){ int b[110][110]; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ b[j][n+1-i]=a[i][j]; } } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ a[i][j]=b[i][j]; } } } void x6(){ x5();x5(); } void x7(){ x5();x5();x5(); } int main(){ scanf("%d%d",&n,&q); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++)scanf("%d",&a[i][j]); } for(int i=1;i<=q;i++){ cin>>c; if(c==1)x1(); if(c==2)x2(); if(c==3)x3(); if(c==4)x4(); if(c==5){ x5(); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++)printf("%d ",a[i][j]); cout<<endl; } cout<<endl; } if(c==6){ x6(); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++)printf("%d ",a[i][j]); cout<<endl; } cout<<endl; } if(c==7){ x7(); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++)printf("%d ",a[i][j]); cout<<endl; } cout<<endl; } } } /* 把最上面一行平移到最下面。 把最下面一行平移到最上面。 把最左边一行平移到最右边。 把最右边一行平移到最左边。 顺时针旋转 90°。 顺时针旋转 180°。 顺时针旋转 270°。 3 5 1 2 3 4 5 6 7 8 9 1 2 3 4 5 */
信息
- ID
- 2956
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 649
- 已通过
- 166
- 上传者