标签:net 空行 false com else ace put pre html
7 1 2 ? 6 ? 3 5 8 ? 6 5 2 ? 7 1 ? 4 ? ? 8 5 1 3 6 7 2 9 2 4 ? 5 6 ? 3 7 5 ? 6 ? ? ? 2 4 1 1 ? 3 7 2 ? 9 ? 5 ? ? 1 9 7 5 4 8 6 6 ? 7 8 3 ? 5 1 9 8 5 9 ? 4 ? ? 2 3Sample Output
7 1 2 4 6 9 3 5 8 3 6 5 2 8 7 1 9 4 4 9 8 5 1 3 6 7 2 9 2 4 1 5 6 8 3 7 5 7 6 3 9 8 2 4 1 1 8 3 7 2 4 9 6 5 2 3 1 9 7 5 4 8 6 6 4 7 8 3 2 5 1 9 8 5 9 6 4 1 7 2 3
#include<stdio.h> #include<string.h> #include<iostream> using namespace std; struct Node { int x,y; }node[100]; int map[10][10]; bool flag; int num; bool check(int k,int t) { for(int i=0;i<9;i++) if(map[node[t].x][i]==k||map[i][node[t].y]==k) return false; int x=(node[t].x/3)*3; int y=(node[t].y/3)*3; for(int i=x;i<x+3;i++) for(int j=y;j<y+3;j++) if(map[i][j]==k) return false; return true; } void DFS(int t) { if(t==num) { for(int i=0;i<9;i++) { for(int j=0;j<8;j++) printf("%d ",map[i][j]); printf("%d\n",map[i][8]); } flag=1; return; } else { for(int i=1;i<=9;i++) { if(check(i,t)&&!flag) { map[node[t].x][node[t].y]=i; DFS(t+1); map[node[t].x][node[t].y]=0; } } } } int main() { bool first=true; char str[10]; while(scanf("%s",&str)!=EOF) { num=0; if(str[0]==‘?‘) { node[num].x=0; node[num++].y=0; map[0][0]=0; } else map[0][0]=str[0]-‘0‘; for(int i=0;i<9;i++) for(int j=0;j<9;j++) { if(i==0&&j==0)continue; scanf("%s",&str); if(str[0]==‘?‘) { node[num].x=i; node[num++].y=j; map[i][j]=0; } else map[i][j]=str[0]-‘0‘; } flag=false; if(first) first=false; else printf("\n"); DFS(0); } return 0; }
http://blog.csdn.net/lyy289065406/article/details/6647977
http://www.cnblogs.com/PJQOOO/p/4074644.html
http://blog.csdn.net/huanhuanxiaoxiao/article/details/77375877
HDU 1426 Sudoku Killer【DFS 数独】
标签:net 空行 false com else ace put pre html
原文地址:http://www.cnblogs.com/Roni-i/p/7436587.html