求助!

P2615 [NOIP2015 提高组] 神奇的幻方

这些判定肯定有哪个写错了,然后数组越界了。你会发现你这个程序5阶幻方似乎都跑不出来。 给你我以前的代码: ```cpp #include<cstdio> #include<cmath> using namespace std; int n,a[40][40],p,y; int main() { //freopen("test.in","r",stdin); //freopen("test.out","w",stdout); scanf("%d",&n); p=1,y=(n+1)/2; for(int i=1;i<=n*n;++i) { a[p][y]=i; if(!a[(p-2+n)%n+1][y%n+1]) p=(p-2+n)%n+1,y=y%n+1; else p=p%n+1; } for(int i=1;i<=n;++i) { for(int j=1;j<=n;++j) { printf("%d ",a[i][j]); } printf("\n"); } } //幸好我小时候玩过这个幻方游戏不然还真做不出来 ``` 不要用判定,用取模。驱魔很方便。
by Whisperain @ 2021-10-06 22:22:21


那么多判定全都可以写成取模,还不容易错。
by Whisperain @ 2021-10-06 22:22:50


|