#include using namespace std; int f[15][15];//九宫格 int xx[90],yy[90];//存储要填的数字的位置 int vis[15][15]={0},ans[15][15]={0},ros[20][20][10]={0};//检测数字是否出现过 int k=1;//记录有多少个位置要填 void print() { for(int i=1;i<=9;i++){ for(int j=1;j<=9;j++){ cout<<f[i][j]<<" "; } cout<<endl; } } //cnt用来记录此时填的第几个数 void dfs(int x,int y,int cnt){ if(cnt>k-1){ print(); exit(0); } for(int i=1;i<=9;i++){ if(vis[x][i]==0&&ans[y][i]==0&&ros[(x+2)/3][(y+2)/3][i]==0){ f[x][y]=i; vis[x][i]++; ans[y][i]++; ros[(x+2)/3][(y+2)/3][i]++; dfs(xx[cnt+1],yy[cnt+1],cnt+1); vis[x][i]--; ans[y][i]--; ros[(x+2)/3][(y+2)/3][i]--; } } } signed main(){ for(int i=1;i<=9;i++){ for(int j=1;j<=9;j++){ cin>>f[i][j]; vis[i][f[i][j]]++; ans[j][f[i][j]]++; ros[(i+2)/3][(j+2)/3][f[i][j]]++; } } for(int i=1;i<=9;i++){ for(int j=1;j<=9;j++){ if(f[i][j]==0) { xx[k]=i; yy[k]=j; k++; } } } dfs(xx[1],yy[1],1); print(); return 0; }