@[lht20090314](/user/728458)
你的代码我看不懂,这道题其实很简单
by jacy1949 @ 2023-04-08 13:40:19
数组定义怎么能用变量定义?
by LiJoQiao @ 2023-04-08 13:56:04
你的代码我直接复制到本地1没问题,2就RE了
by LiJoQiao @ 2023-04-08 14:12:45
@[jacy1949](/user/891662) 我的想法是用循环一个一个的把数字填上去,最后输出,但不知道为什么有问题
by lht20090314 @ 2023-04-08 22:32:29
@[LiJoQiao](/user/945364) 我本地甚至连样例都过不去,所以我想知道到底哪里有问题?
by lht20090314 @ 2023-04-08 22:33:54
@[lht20090314](/user/728458)
把
```
for (int i = 2; i <= n * n; i++)
{
if (y != n && a[x][y + 1] == 0) a[x][y + 1] = i, y++; // 不在最后一列并且右边没有数字
else if (x != n && a[x + 1][y] == 0) a[x + 1][y] = i, x++; // 不在最后一行并且下面没有数字
else if (y != 1 && a[x][y - 1] == 0) a[x][y - 1] = i, y--; // 不在第一列并且左边没有数字
else if (a[x - 1][y] == 0) a[x - 1][y] = i; x--; // 上面没有数字
}
```
改成
```
while (k<=n*n)
{
while(y<n&&!a[x][y+1])a[x][++y]=k++;
while(x<n&&!a[x+1][y])a[++x][y]=k++;
while(y>1&&!a[x][y-1])a[x][--y]=k++;
while(x>1&&!a[x-1][y])a[--x][y]=k++;
}
```
by jacy1949 @ 2023-04-11 19:25:40