COGS 2104. [NOIP2015]神奇的幻方

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了COGS 2104. [NOIP2015]神奇的幻方相关的知识,希望对你有一定的参考价值。

★   输入文件:2015magic.in   输出文件:2015magic.out   简单对比
时间限制:1 s   内存限制:256 MB

技术分享

技术分享

技术分享

 模拟

一开始数组开小了。。

屠龙宝刀点击就送

#include <cstdio>
int n,h[1600],l[1600],hf[45][45];
int main()
{
    freopen("2015magic.in","r",stdin);freopen("2015magic.out","w",stdout);
    scanf("%d",&n);
    hf[1][n/2+1]=1;
    h[1]=1;l[1]=n/2+1;
    for(int i=2;i<=n*n;++i)
    {
        if(h[i-1]==1&&l[i-1]!=n) h[i]=n,l[i]=l[i-1]+1,hf[h[i]][l[i]]=i;
        else if(h[i-1]!=1&&l[i-1]==n) h[i]=h[i-1]-1,l[i]=1,hf[h[i]][l[i]]=i;
        else if(h[i-1]==1&&l[i-1]==n) h[i]=h[i-1]+1,l[i]=l[i-1],hf[h[i]][l[i]]=i;
        else if(h[i-1]!=1&&l[i-1]!=n)
        {
            if(!hf[h[i-1]-1][l[i-1]+1])
            h[i]=h[i-1]-1,l[i]=l[i-1]+1,hf[h[i]][l[i]]=i;
            else h[i]=h[i-1]+1,l[i]=l[i-1],hf[h[i]][l[i]]=i;
        }
    }
    for(int i=1;i<=n;++i)
     for(int j=1;j<=n;++j)
      j!=n?printf("%d ",hf[i][j]):printf("%d\n",hf[i][j]);
    return 0;
}

 

以上是关于COGS 2104. [NOIP2015]神奇的幻方的主要内容,如果未能解决你的问题,请参考以下文章

神奇的幻方(NOIP2015)(真·纯模拟)

noip2015神奇的幻方

NOIP2015Senior 神奇的幻方

洛谷-神奇的幻方-NOIP2015提高组复赛

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

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