求助,求大佬帮忙看看哪里错了

P4924 [1007] 魔法少女小Scarlet

首先数据给的是第几行第几列。 你这里从0开始,传入时需要-1。 而且你这旋转好像有问题,你可以打印试下
by 编码落寞 @ 2021-11-16 16:08:59


@[编码落寞](/user/557751) 样例意思是从1为下标是吗,我去试试
by lin_ac @ 2021-11-16 16:50:30


AC代码 此帖终结 ```c++ #include<iostream> using namespace std; int arr[510][510]; int tmp[510][510]; void raotate_c(int x,int y,int r){ //顺时针转 for(int i=x-r;i<=x+r;i++){ for(int j=y-r;j<=y+r;j++){ tmp[x-y+j][x+y-i]=arr[i][j]; } } for(int i=x-r;i<=x+r;i++){ for(int j=y-r;j<=y+r;j++){ arr[i][j]=tmp[i][j]; } } } void raotate_r(int x,int y,int r){ //逆时针转 for(int i=x-r;i<=x+r;i++){ for(int j=y-r;j<=y+r;j++){ tmp[x+y-j][y-x+i]=arr[i][j]; } } for(int i=x-r;i<=x+r;i++){ for(int j=y-r;j<=y+r;j++){ arr[i][j]=tmp[i][j]; } } } int main(){ int n,m,cnt=1; cin>>n>>m; for(int i=1;i<=n;i++){ //输入数组 for(int j=1;j<=n;j++){ arr[i][j]=cnt; cnt++; } } for(int i=1;i<=m;i++){ //开始旋转 int x,y,r,z; cin>>x>>y>>r>>z; if(z==0){ raotate_c(x,y,r); } else{ raotate_r(x,y,r); } } for(int i=1;i<=n;i++){ //输出 for(int j=1;j<=n;j++){ cout<<arr[i][j]<<" "; } cout<<endl; } return 0; } ```
by lin_ac @ 2021-11-16 18:54:08


|