9个wa,一个tle,爆零代码求解

P4924 [1007] 魔法少女小Scarlet

``` //输入输出我习惯scanf,printf #include<bits/stdc++.h> using namespace std; const int N=600; //定义临时数组 swap会有问题 int a[N][N],ans[N][N]; int n,m,x,y,r,z; int main(){ scanf("%d %d",&n,&m); int p=1; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) a[i][j]=p++; while(m--){ scanf("%d %d %d %d",&x,&y,&r,&z); if(z==0){ int up=x-r,down=x+r; int le=y-r,ri=y+r; for(int i=up;i<=down;i++){ for(int j=le;j<=ri;j++){ ans[x-y+j][x+y-i]=a[i][j]; } } for(int i=up;i<=down;i++) for(int j=le;j<=ri;j++) a[i][j]=ans[i][j]; } else{ int up=x-r,down=x+r; int le=y-r,ri=y+r; for(int i=up;i<=down;i++){ for(int j=le;j<=ri;j++){ ans[x+y-j][y-x+i]=a[i][j]; } } for(int i=up;i<=down;i++){ for(int j=le;j<=ri;j++){ a[i][j]=ans[i][j]; } } } } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) printf("%d ",a[i][j]); printf("\n"); } return 0; } ```
by 123456789dd @ 2023-08-08 19:48:06


@[123456789dd](/user/1043825) 你好,这个写法上,没太能解释明白为什么swap会有问题
by AlexanderC @ 2023-08-08 20:15:56


|