以下是AC代码
#include
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(n11])a[x][++y]=++n;
while(x+11][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;x0;y"%d ",a[x][y]);
}
cout<<'\n';
}
return 0;
}
这一部分的数组中如果把y+1换成++y就会出错,想要请问他们的原理有什么不同(y+1和++y)
我记得两个都是先计算再使用
while(n[x][y+1])a[x][++y]=++n;
while(x+1[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;
}
y+1 ,表达式的值+1,例如 y = 0, x=y+1,那么y=0,x=1,
++y ,相当于y=y+1, 例如 y = 0, x=++y,那么y=1,x=1。
y+1并不会让y增加
只是表达式结果是y+1而已
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t1jnjvvy-1627044278330)(C:\Users\98614\AppData\Roaming\Typora\typora-user-images\image-20210723181455302.png)]
CD