poj2676——Sudoku

题目大意:9*9数独,每行每列和每个3*3的方块中都必须含有1~9九个数字,编写程序求解数独

输入:(空格用0代替)

            case个数n

            第i个case的9*9数独已知部分

输出:(如果多解,输出任意一个即可)

            9*9的数独解

分析:dfs搜索(leetcode36:判断给出的数独是否合法;leetcode37:填写数独)

           从左上角格子开始填写,如果已填写过就dfs下一个格子,否则就dfs九个数字填写这个格子

代码:转载自http://blog.csdn.net/qq_33929112/article/details/52142284

#include  
#include  
using namespace std;  
int a[10][10];  
char s[10][10];  
//下标都是从0到8  
//判断(x,y)处能否放置k  
bool flag;  
bool ok(int k,int x,int y)  
{  
    for(int i=0;i<9;i++){  
        if(a[i][y]==k) return false;  
    }  
    for(int j=0;j<9;j++){  
        if(a[x][j]==k) return false;  
    }  
    int u=x-x%3,v=y-y%3;  
    for(int i=u;i

 

你可能感兴趣的:(搜索)