咋啦(来自另一位菜鸡的关心)
by 护法夜叉—魈 @ 2021-04-01 20:29:10
啥问题?
by 护法夜叉—魈 @ 2021-04-01 20:30:22
哈,终于看到个入门的啦(逐渐膨胀)
by 护法夜叉—魈 @ 2021-04-01 20:31:53
@[xuyuanchen](/user/439126) 同痣,什么问题
by 护法夜叉—魈 @ 2021-04-01 20:32:26
a开的不够大(80x80应该就够用了)
主要是for用的是i从1到n,j也是,n又被赋值成2n-1,导致程序试图清空a中80x80的区域,但是a没那么大,所以会出bug。
by zhong2010 @ 2021-04-01 21:37:20
(数据范围n<=39,2n+1<=79)
by zhong2010 @ 2021-04-01 21:38:17
@[xuyuanchen](/user/439126)
问题总结:
1.因为 1≤n≤50,所以数组需要开到50 * 50,保守起见,开到 55 * 55。
2.因为lz码风独特,看不出有啥问题~~不想看~~。
Code:
```cpp
#include <cstdio>
using namespace std;
int n;
int a[55][55];
int main()
{
scanf("%d",&n);
a[1][n/2+1]=1;
int cur=1;
int i,j;
i=1,j=n/2+1;
while(cur<=n*n)
{
cur++;
if(cur>n*n)
{
break;
}
if(i==1 && j!=n)
{
i=n;
j++;
a[i][j]=cur;
}
else if(i!=1 && j==n)
{
j=1;
i--;
a[i][j]=cur;
}
else if(i==1 && j==n)
{
i=2;
a[i][j]=cur;
}
else if(i!=1 && j!=n)
{
if(a[i-1][j+1]==0)
{
i--;
j++;
a[i][j]=cur;
}
else
{
i++;
a[i][j]=cur;
}
}
}
for(register int x=1;x<=n;x++)
{
for(register int y=1;y<=n;y++)
{
printf("%d ",a[x][y]);
}
printf("\n");
}
return 0;
}
```
by Coros_Trusds @ 2021-04-10 23:12:24
@[Coros_Trusds](/user/430409) dalao谢谢
by xuyuanchen @ 2021-04-24 14:09:14
@[护法夜叉—魈](/user/267572) 错误,得了10分
by xuyuanchen @ 2021-04-24 14:09:49
@[zhong2010](/user/241288) thankyou
by xuyuanchen @ 2021-04-24 14:10:32