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;
    }
  • 相关阅读:
    codeforces 719A:Vitya in the Countryside
    POJ3233 Matrix Power Series
    codevs1409 拦截导弹2
    BZOJ1562 [NOI2009]变换序列
    POJ1325 Machine Schedule
    codeforces 715B:Complete The Graph
    BZOJ1972:[SDOI2010]猪国杀
    浅谈模拟
    BZOJ2548:[CTSC2002]灭鼠行动
    BZOJ1033:[ZJOI2008]杀蚂蚁
  • 原文地址:https://www.cnblogs.com/kimsimple/p/6683946.html
Copyright © 2011-2022 走看看