#include<iostream>
#include<stdio.h>
#include<string.h>
#include<cstring>
#include<algorithm>
#include<stack>
#define ll long long
#define N 200000
#include<math.h>
#include<queue>
using namespace std;
int mp[15][15];
char str[15];
char c;
int pos_t;
int col_vis[15][15];
int row_vis[15][15];
int nine_nine[15][15];
struct node{
int x,y;
};
node pos[100];
int yes;
void dfs(int n){
// cout<<"ok"<<endl;
if(yes)return ;
int xx=pos[n].x;
int yy=pos[n].y;
int jiu=(xx/3)*3+yy/3;
for(int i=1;i<=9;i++){
if(col_vis[yy][i]||row_vis[xx][i]||nine_nine[jiu][i])continue;
col_vis[yy][i]=1;
row_vis[xx][i]=1;
nine_nine[jiu][i]=1;
mp[xx][yy]=i;
if(n==pos_t-1||yes){
yes=1;
}
dfs(n+1);
if(yes)return;
col_vis[yy][i]=0;
row_vis[xx][i]=0;
nine_nine[jiu][i]=0;
}
}
int main(){
// freopen("input2.txt","r",stdin);
int t;
cin>>t;
while(t--){
memset(nine_nine,0,sizeof(nine_nine));
memset(row_vis,0,sizeof(row_vis));
memset(col_vis,0,sizeof(col_vis));
yes=0;
pos_t=0;
//cout<<"ok"<<endl;
for(int i=0;i<9;i++){
scanf("%s",str);
for(int j=0;j<9;j++){
mp[i][j]=str[j]-'0';
if(mp[i][j]==0){
pos[pos_t].x=i;
pos[pos_t++].y=j;
}
else {
row_vis[i][mp[i][j]]=1;
col_vis[j][mp[i][j]]=1;
nine_nine[(i/3)*3+j/3][mp[i][j]]=1;
}
}
}/// 输入完毕
dfs(0);
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
printf("%d",mp[i][j]);
}
printf("\n");
}
}
return 0;
}
poj2676[
猜你喜欢
转载自blog.csdn.net/qq_40675883/article/details/82806291
今日推荐
周排行