#include <iostream>
#include <vector>
using namespace std;
vector<int> b;
vector<vector<int> > a(4,vector<int>(4));
void prnt(){
for(int i=0;i<4;i++){
for(int j=0;j<4;j++)
cout<<a[i][j];
cout<<endl;
}
}
void chk2(int i,int j){
int i1,j1,i2,j2;
if(i<2)
i1=0,i2=2;
else
i1=2,i2=4;
if(j<2)
j1=0,j2=2;
else
j1=2,j2=4;
for(;i1<i2;i1++){
for(;j1<j2;j1++){
b[a[i1][j1]]=1;
}
}
}
void chk(int i,int j){
b.assign(5,0);
for(int k=0;k<4;k++)
b[a[i][k]]=b[a[k][j]]=1;
chk2(i,j);
}
int fill(int i,int j){
if(j==4)
i++,j=0;
if(i==4){
prnt();
return 1;
}
if(a[i][j]==0){
chk(i,j);
for(int k=1;k<5;k++){
if(!b[k]){
a[i][j]=k;
if(fill(i,j+1)){
return 1;
}
a[i][j]=0;
chk(i,j);
}
}
return 0;
}
return fill(i,j+1);
}
int main(){
ios::sync_with_stdio(0);
int cs=1;
int t;
cin>>t;
while(t--){
for(int i=0;i<4;i++)
for(int j=0;j<4;j++){
ws(cin);
char x;
cin>>x;
if(x!='*')
a[i][j]=x-'0';
else
a[i][j]=0;
}
cout<<"Case #"<<cs++<<":"<<endl;
fill(0,0);
}
}
#include <vector>
using namespace std;
vector<int> b;
vector<vector<int> > a(4,vector<int>(4));
void prnt(){
for(int i=0;i<4;i++){
for(int j=0;j<4;j++)
cout<<a[i][j];
cout<<endl;
}
}
void chk2(int i,int j){
int i1,j1,i2,j2;
if(i<2)
i1=0,i2=2;
else
i1=2,i2=4;
if(j<2)
j1=0,j2=2;
else
j1=2,j2=4;
for(;i1<i2;i1++){
for(;j1<j2;j1++){
b[a[i1][j1]]=1;
}
}
}
void chk(int i,int j){
b.assign(5,0);
for(int k=0;k<4;k++)
b[a[i][k]]=b[a[k][j]]=1;
chk2(i,j);
}
int fill(int i,int j){
if(j==4)
i++,j=0;
if(i==4){
prnt();
return 1;
}
if(a[i][j]==0){
chk(i,j);
for(int k=1;k<5;k++){
if(!b[k]){
a[i][j]=k;
if(fill(i,j+1)){
return 1;
}
a[i][j]=0;
chk(i,j);
}
}
return 0;
}
return fill(i,j+1);
}
int main(){
ios::sync_with_stdio(0);
int cs=1;
int t;
cin>>t;
while(t--){
for(int i=0;i<4;i++)
for(int j=0;j<4;j++){
ws(cin);
char x;
cin>>x;
if(x!='*')
a[i][j]=x-'0';
else
a[i][j]=0;
}
cout<<"Case #"<<cs++<<":"<<endl;
fill(0,0);
}
}
Comments
Post a Comment