zoukankan      html  css  js  c++  java
  • POJ 2676 数独+dfs深搜

    数独

    #include "cstdio"
    #include "cstring"
    #include "cstdlib"
    #include "iostream"
    using namespace std;
    #include <cstdio>
    int num,v[82][2],map[10][10];///v存储需要填的位置
    bool finished;
    bool judge(int x,int y,int k)
    {
        int i,j,it,jt;
        for(i=0; i<9; i++)
        {
            if(map[i][y]==k) return false;///同行同列不能有同数字
            if(map[x][i]==k) return false;
        }
        it=(x/3)*3;
        jt=(y/3)*3;
        for(i=0; i<3; i++)///一块内数字不能相同
            for(j=0; j<3; j++)
                if(map[i+it][j+jt]==k)
                    return false;
        return true;
    }
    
    void dfs(int k)
    {
        if(finished) return;
        if(k>=num)
        {
            finished =true;
            for(int i=0; i<9; i++)
            {
                for(int j=0; j<9; j++)
                    printf("%d",map[i][j]);
                printf("
    ");
            }
        }
        for(int i=1;i<=9;i++)///1到9 9个数字
        {
            int x=v[k][0];///填第k个空
            int y=v[k][1];
            if(judge(x,y,i))///能填吗?
            {
                map[x][y]=i;
                dfs(k+1);///下一个数
                map[x][y]=0;
            }
        }
    }
    
    int main()
    {
        int t;
        scanf("%d
    ",&t);
        while(t--)
        {
            num=0;
            finished =false;
            char c;
            for(int i=0;i<9;i++)
            {
                for(int j=0;j<9;j++)
                {
                    scanf("%c",&c);
                    map[i][j]=c-'0';
                    if(map[i][j]==0)
                    {
                        v[num][0]=i;
                        v[num][1]=j;
                        num++;
                    }
                }
                getchar();
            }
            dfs(0);
        }
        return 0;
    }
  • 相关阅读:
    csuoj-1004-Xi and Bo
    csuoj-1003-UC Browser
    网络命令
    linux网络配置
    java面向对象
    java类 面向对象
    java方法 Scanner、Random类
    java集合
    java数组
    java流程控制语句
  • 原文地址:https://www.cnblogs.com/kimsimple/p/6683946.html
Copyright © 2011-2022 走看看