以下是AC代码
#include<iostream>
using namespace std;
int a[100][100]={0};
int main(){
int x,y,c1,c2,n=0;
cin>>c1>>c2;
n=a[x=0][y=0]=1;
while(n<c1*c2){
while(y+1<c2&&!a[x][y+1])a[x][++y]=++n;
while(x+1<c1&&!a[x+1][y])a[++x][y]=++n;
while(y-1>=0&&!a[x][y-1])a[x][--y]=++n;
while(x-1>=0&&!a[x-1][y])a[--x][y]=++n;
}
for(int x=0;x<c1;x++){
for(int y=0;y<c2;y++){
printf("%d ",a[x][y]);
}
cout<<'\n';
}
return 0;
}
这一部分的数组中如果把y+1换成++y就会出错,想要请问他们的原理有什么不同(y+1和++y)
我记得两个都是先计算再使用
while(n<c1*c2){
while(y+1<c2&&!a[x][y+1])a[x][++y]=++n;
while(x+1<c1&&!a[x+1][y])a[++x][y]=++n;
while(y-1>=0&&!a[x][y-1])a[x][--y]=++n;
while(x-1>=0&&!a[x-1][y])a[--x][y]=++n;
}