```cpp
for(int j=1;j<=m;j++){
for(int k=1;k<=m;k++){
cout<<n[k][x]<<" ";
}
cout<<endl;
}
```
$x$ 在循环中是不变的。
by yuchenren @ 2022-04-17 10:06:29
你这里错的有点多欸QWQ
正确的[AC code:](https://www.luogu.com.cn/record/74092603)
```cpp
#include<iostream>
using namespace std;
int main()
{
int n[50][50]={},m,a=0,b=2;//wrong1
cin>>m;
int x=1,y=m/2+1;
n[x][y]=1;
for(int i=2;i<=m*m;i++){
if(x==1&&y!=m){//wrong2
n[m][y+1]=b;
x=m;
y=y+1;
}
else if(y==m&&x!=1){
n[x-1][1]=b;//wrong3
x=x-1;//wrong4
y=1;
}
else if(x==1&&y==m){
n[x+1][y]=b;
x=x+1;
}
else if(x!=1&&y!=m){
if(n[x-1][y+1]==0){//wrong5
n[x-1][y+1]=b;//wrong6
x=x-1;//wrong7
y=y+1;
}
else{
n[x+1][y]=b;//wrong8
x=x+1;//wrong9
}
}
b++;
}
for(int j=1;j<=m;j++){
for(int k=1;k<=m;k++){
cout<<n[j][k]<<" ";//wrong10
}
cout<<endl;
}
return 0;
}
```
自己对照一下,待会告诉原因^v^。
by coldy_rainy @ 2022-04-17 10:43:29
@[feng_nuoyiman](/user/702449)
by coldy_rainy @ 2022-04-17 10:43:56
@[feng_nuoyiman](/user/702449)
## wrong 1:
**错误**代码:```n[50][50]```
**正确**代码:```n[50][50]={}```
**错因**:数组没初始化,会出现一些乱七八糟的数进去。
**改正建议**:像我一样初始化。
## wrong 2:
**错误**代码:```x==1&&y!=1```
**正确**代码:```x==1&&y!=m```
**错因**:
题目描述:
---
若 ( $ K $ $ -1$ ) 在第一行但不在**最后一列**,则将 $K$ 填在最后一行, ( $ K $ $ -1$ ) 所在列的右一列;
---
而你的 ```y```设定错误,违反了题目描述。
**改正建议**:如正确代码。
## wrong 3:
**错误**代码:```n[x+1][1]```
**正确**代码:```n[x-1][1]```
**错因**:
题目描述:
---
若 ( $ K $ $ -1 $ ) 在最后一列但不在第一行,则将 $ K $ 填在第一列, ($ K$ $ -1$) 所在行的**上一行**;
---
向**上**, ```x```应该 $-1$ ,而你的```x```却是 $+1$。
## wrong4:
同 $ \bold {wrong 3 } $。
by coldy_rainy @ 2022-04-17 10:59:56
@[feng_nuoyiman](/user/702449)
## wrong5:
**错误**代码:```n[x+1][y+1]```
**正确**代码:```n[x-1][y+1]```
**错因**:
题目描述:
---
如果 ( $ K $ $ -1$ ) 的右**上**方还未填数,则将 K 填在 ($ K$ $ -1$ ) 的右**上**方;
---
向**上**,```x```应该 $ -1 $ ,而你的代码却是 $+1$。
## wrong 6
同 $\bold{wrong 5}$。
## wrong 7:
同 $\bold{wrong 5}$。
## wrong 8:
**错误**代码:```n[x][y+1]=b;```
**正确**代码:```n[x+1][y]=b;```
**错因**:
题目描述:
---
否则将 $K$ 填在 ($K$$-1$) 的**正下方**。
---
正下方,是 $ x $ $+1$ ,而不是 $ y $ $+1$。
## wrong 9:
同 $\bold {wrong 8}$。
## wrong 10:
**错误**代码:```cout<<n[k][x]<<" ";```
**正确**代码:```cout<<n[j][k]<<" ";```
**错因**:
$ x $ 是个不变量,而 $ j $ 才是横坐标,$ k $ 才是纵坐标。
$ \bold{THE END}$
by coldy_rainy @ 2022-04-17 11:11:26
@[penhaochen](/user/526755) 太感谢了![](https://啧.tk/mg)![](https://啧.tk/mg)
by feng_nuoyiman @ 2022-04-17 11:14:37
@[penhaochen](/user/526755)
发错了,那堆乱码重发一次:
wrong 8:
**错误**代码:```n[x][y+1]=b;```
**正确**代码:```n[x+1][y]=b;```
**错因**:
题目描述:
---
否则将 $K$ 填在 ($K-1$) 的**正下方**。
---
正下方,是 $ x +1$ ,而不是 $ y +1$。
## wrong 9:
同 $\bold {wrong 8}$。
## wrong 10:
**错误**代码:```cout<<n[k][x]<<" ";```
**正确**代码:```cout<<n[j][k]<<" ";```
**错因**: $ x $ 是个不变量,而 $ j $ 才是横坐标,$ k $ 才是纵坐标。
$ \bold{THE END}$
by coldy_rainy @ 2022-04-17 11:15:06