SHADOWICENCXIX

导航

洛谷2615

朴素的暴力膜。。

把规则翻译为代码即可

详见注释

上代码~

#include<stdio.h>
using namespace std;
int lastx;int lasty;
int map[39][39];
int n;
void prit()//打印函数
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            printf("%d ",map[i][j]);
        }
        printf("\n");
    }
    //printf("\n");
    return;
}
int main()
{
    scanf("%d",&n);
    map[0][n/2]=1;lastx=0;lasty=n/2;//保存上一个点的行列
    for(int i=2;i<=n*n;i++)
    {   
        if(lastx!=0&&lasty!=n-1)//最常见的放前面,加速
        {
            if(map[lastx-1][lasty+1]==0)//如果没有放数
            {
                lastx=lastx-1;lasty=lasty+1;
                map[lastx][lasty]=i;
                //prit();
                continue;
            }
            else//如果放了数
            {
                lastx=lastx+1;lasty=lasty;
                map[lastx][lasty]=i;
                //prit();
                continue;
            }
        }
        if(lastx==0&&lasty!=n-1)//第一行不是最后一列
        {
            lastx=n-1;lasty=lasty+1;
            map[lastx][lasty]=i;
            //prit();
            continue;
        }
        if(lastx!=0&&lasty==n-1)//不是第一行最后一列
        {
            lastx=lastx-1;lasty=0;
            map[lastx][lasty]=i;
            //prit();
            continue;
        }
        if(lastx==0&&lasty==n-1)//右上角
        {
            lastx=1;lasty=n-1;
            map[lastx][lasty]=i;
            //prit();
            continue;
        }
    }
    prit();
    return 0;//拜拜程序~
}

posted on 2017-10-15 17:06  SHADOWICENCXIX  阅读(178)  评论(0编辑  收藏  举报