Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
正搜1400ms 分享代码#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <queue> using namespace std; string csudo[9]; int sudo[9][9]; int flag; int check(int n, int x, int y){ for(int i=0; i<9; i++){ if(sudo[x][i] == n) return 0; if(sudo[i][y] == n) return 0; } int a=x/3*3; int b=y/3*3; for(int i=a; i<(a+3); i++){ for(int j=b;j<(b+3); j++){ if(sudo[i][j] == n) return 0; } } return 1; } void dfs(int x, int y){ if(x==9){ flag=1; return; } int nx = x+(y+1)/9; int ny = (y+1)%9; if(sudo[x][y] != 0){ dfs(nx,ny); }else{ for(int i=1; i<=9; i++){ if(check(i,x,y)){ sudo[x][y]=i; dfs(nx,ny); if(flag) return; sudo[x][y]=0; } } } } void printsudo(){ for(int i=0; i<9; i++){ for(int j=0; j<9; j++){ cout<<sudo[i][j]; if(j==8) cout<<endl; } } } int main(){ //freopen ("in.txt" , "r" , stdin); //freopen ("out.txt" , "w" , stdout); int icase; cin>>icase; while(icase--){ for(int i=0; i<9; i++){ cin>>csudo[i]; } for(int i=0; i<9; i++){ for(int j=0; j<9; j++){ sudo[i][j] = csudo[i][j]-'0'; } } flag=0; dfs(0,0); printsudo(); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator