无缘无故就T了,怎么回事???

P5731 【深基5.习6】蛇形方阵

```cpp #include<bits/stdc++.h> using namespace std; int a[10][10]; int main(){ int n, flag = 1 , x = 1, y = 0; scanf("%d", &n); while (flag <= n * n) { while (!a[x][y + 1] && y < n) a[x][++y] = flag++; while (!a[x + 1][y] && x < n) a[++x][y] = flag++; while (!a[x][y - 1] && y > 1) a[x][--y] = flag++; while (!a[x - 1][y] && x > 1) a[--x][y] = flag++; } for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n; ++j) printf("%3d ", a[i][j]); printf("\n"); } return 0; } ``` 现在试一下。
by syhx @ 2023-07-20 21:14:51


~~如果可以请关注一下~~
by syhx @ 2023-07-20 21:15:22


一个死循环。 你的第一次循环 ```cpp while (!a[x][y + 1] && y < n) a[x][++y] = ++flag; ``` 中,当a[x][y+1]==0后,a[x+1][y]等于0.然后flag就卡在n上面了。
by Jianbing_Juan @ 2023-07-20 21:20:14


|