标签:
Description
Input
Output
Sample Input
1 103000509 002109400 000704000 300502006 060000050 700803004 000401000 009205800 804000107
Sample Output
143628579 572139468 986754231 391542786 468917352 725863914 237481695 619275843 854396127
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<string> #include<algorithm> #include<cmath> #include<queue> using namespace std; int tt,a[10][10],row[10][10],col[10][10],grid[10][10]; bool flag; char s[10][10]; void print() { for(int i=0;i<9;i++) { for(int j=0;j<9;j++) { printf("%d",a[i][j]); } printf("\n"); } } void dfs(int x,int y) { if(x==9) { flag=true; return ; } if(a[x][y]!=0) { if(y==8) dfs(x+1,0); else dfs(x,y+1); } else { int ret=3*(x/3)+y/3; for(int i=1;i<=9;i++) { if(row[x][i]||col[y][i]||grid[ret][i]) continue; a[x][y]=i; row[x][i]=1,col[y][i]=1,grid[ret][i]=1; if(y==8) dfs(x+1,0); else dfs(x,y+1); if(flag) return ; a[x][y]=0; row[x][i]=0,col[y][i]=0,grid[ret][i]=0; } } } int main() { scanf("%d",&tt); while(tt--) { flag=false; memset(a,0,sizeof(a)); memset(row,0,sizeof(row)); memset(col,0,sizeof(col)); memset(grid,0,sizeof(grid)); for(int i=0;i<9;i++) scanf("%s",s[i]); for(int i=0;i<9;i++) for(int j=0;j<9;j++) a[i][j]=s[i][j]-‘0‘; for(int i=0;i<9;i++) { for(int j=0;j<9;j++) { if(a[i][j]!=0) { row[i][a[i][j]]=1; col[j][a[i][j]]=1; grid[3*(i/3)+j/3][a[i][j]]=1; } } } dfs(0,0); print(); } return 0; }
标签:
原文地址:http://www.cnblogs.com/a972290869/p/4288727.html