zoukankan      html  css  js  c++  java
  • 洛谷 P1784 数独

    题目描述

    数独是根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫内的数字均含1-9,不重复。每一道合格的数独谜题都有且仅有唯一答案,推理方法也以此为基础,任何无解或多解的题目都是不合格的。

    芬兰一位数学家号称设计出全球最难的“数独游戏”,并刊登在报纸上,让大家去挑战。

    这位数学家说,他相信只有“智慧最顶尖”的人才有可能破解这个“数独之谜”。

    据介绍,目前数独游戏的难度的等级有一道五级,一是入门等级,五则比较难。不过这位数学家说,他所设计的数独游戏难度等级是十一,可以说是所以数独游戏中,难度最高的等级他还表示,他目前还没遇到解不出来的数独游戏,因此他认为“最具挑战性”的数独游戏并没有出现。

    输入输出格式

    输入格式:

    一个未填的数独

    输出格式:

    填好的数独

    输入输出样例

    输入样例#1:
    8 0 0 0 0 0 0 0 0 
    0 0 3 6 0 0 0 0 0 
    0 7 0 0 9 0 2 0 0 
    0 5 0 0 0 7 0 0 0 
    0 0 0 0 4 5 7 0 0 
    0 0 0 1 0 0 0 3 0 
    0 0 1 0 0 0 0 6 8 
    0 0 8 5 0 0 0 1 0 
    0 9 0 0 0 0 4 0 0
    输出样例#1:
    8 1 2 7 5 3 6 4 9 
    9 4 3 6 8 2 1 7 5 
    6 7 5 4 9 1 2 8 3 
    1 5 4 2 3 7 8 9 6 
    3 6 9 8 4 5 7 2 1 
    2 8 7 1 6 9 5 3 4 
    5 2 1 9 7 4 3 6 8 
    4 3 8 5 2 6 9 1 7 
    7 9 6 3 1 8 4 5 2

    说明

    你猜,你猜,你猜猜猜

    猜不出来吧,我不告诉你~~~

    dfs

    屠龙宝刀点击就送

    #include <cstdlib>
    #include <cstdio>
    char str[10];
    int ans,num,G[10][10];
    bool flag,h[10][10],l[10][10],g[10][10];
    inline int max(int a,int b) {return a>b?a:b;}
    int bel(int x,int y)
    {
        if(x<=3&&y<=3) return 1;
        if(x<=3&&y<=6) return 2;
        if(x<=3&&y<=9) return 3; 
        if(x<=6&&y<=3) return 4;
        if(x<=6&&y<=6) return 5;
        if(x<=6&&y<=9) return 6;
        if(y<=3) return 7; 
        if(y<=6) return 8;
        if(y<=9) return 9;
    }
    struct node
    {
        int x,y;
    }kb[81];
    void output()
    {
        for(int i=1;i<=9;++i)
         for(int j=1;j<=9;++j)
          j==9?printf("%d
    ",G[i][j]):printf("%d ",G[i][j]);
    }
    void dfs(int NUM,int a,int b)
    {
        if(NUM==num+1) {output();exit(0);}
        for(int i=1;i<=9;++i)
        {
            if(h[a][i]||l[b][i]||g[bel(a,b)][i]) continue;
            h[a][i]=1;
            l[b][i]=1;
            g[bel(a,b)][i]=1;
            G[a][b]=i;
            dfs(NUM+1,kb[NUM+1].x,kb[NUM+1].y);
            h[a][i]=0;
            l[b][i]=0;
            g[bel(a,b)][i]=0;
        }
    }
    int main()
    {
        for(int i=1;i<=9;++i)
         for(int j=1;j<=9;++j)
         {
             scanf("%d",&G[i][j]);
             if(!G[i][j])
            {
                kb[++num].x=i;
                kb[num].y=j;
            }
            else
            {
                h[i][G[i][j]]=1;
                l[j][G[i][j]]=1;
                g[bel(i,j)][G[i][j]]=1;
            } 
         } 
        dfs(1,kb[1].x,kb[1].y);
        return 0;
    }
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    单例 全局变量
    平安亲人 测试数据
    UIButton
    apple id
    背景图的按钮
    大头针飘移问题
    图文并茂Windows系统使用XAMPP搭建本地mysql数据库导入数据库并使用node.js访问数据库
    JS原生上传文件,读取文件格式,控制文件只可以上传某些格式,并使用fileReader转换格式
    今天学到的新知识使用localtunnel实现内网穿透,感觉很神奇哇~~
    在Mac OS上将Node.js连接到XAMPP MySQL服务器一直报错error connecting: Error: connect ECONNREFUSED
  • 原文地址:https://www.cnblogs.com/ruojisun/p/7502081.html
Copyright © 2011-2022 走看看