在练习的时候遇到了这样一个问题,求教!
蛇形填数问题,
其中while循环中的最后一条while语句,**while(y+1<n && !a[x][y+1])**
如果改成while(**y++**<n && !a[x][y+1])或者while(**++y**<n && !a[x][y+1]);
就不会得到正确的蛇形填数结果,
错误结果如下
正确结果如下
#include <iostream>
#include <string.h>
int main(int argc, char** argv) {
int n;n=7;int a[n][n];memset(a,0,sizeof(a));
int step=1;
int x=0;int y=n-1;
a[0][y]=1;
while(step<n*n){
while(x+1<n && !a[x+1][y]) a[++x][y]=++step;
while(y-1>=0 && !a[x][y-1]) a[x][--y]=++step;
while(x-1>=0 && !a[x-1][y]) a[--x][y]=++step;
while(y+1<n && !a[x][y+1]) a[x][++y]=++step;
}
for(x=0;x<n;x++){
for(y=0;y<n;y++){
printf("%4d",a[x][y]);
}
printf("\n");
}
return 0;
}
求解!