这道题我的代码原封不动地输出了输入数据。。。咋办,求助
代码在最下面,先放题
输入一个9*9的未完成数独,要求完成此数独,输出任意一解。
103000509
002109400
000704000
300502006
060000050
700803004
000401000
009205800
804000107
143628579
572139468
986754231
391542786
468917352
725863914
237481695
619275843
854396127
#include <iostream>
using namespace std;
int t,a[10][10];
bool ok(){
for(int i=1;i<=9;i++)for(int j=1;j<=9;j++)if(a[i][j]==0)return 0;
return 1;
}
bool flag=0;
void DFS(int x,int y,int k){
if(flag)return ;
if(a[x][y]==0){
for(int i=1;i<=9;i++){
if(a[i][y]==k||a[x][i]==k)return;
}
int xx=x>6?7:(x>3?4:1);
int yy=y>6?7:(y>3?4:1);
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(a[xx+i][yy+j]==k)return ;
}
}
a[x][y]=k;
flag=ok();
if(flag)return ;
for(int i=1;i<=9;i++){
if(x+1<=9&&!flag)DFS(x+1,y,i);
if(x-1>=1&&!flag)DFS(x-1,y,i);
if(y+1<=9&&!flag)DFS(x,y+1,i);
if(y-1>=1&&!flag)DFS(x,y-1,i);
}
if(flag)return ;
a[x][y]=0;
}
}
int main(){
cin>>t;
while(t--){
//for(int i=1;i<=9;i++)for(int j=1;j<=9;j++)a[i][j]=getchar()-'0';
string s;
for(int i=1;i<=9;i++){
cin>>s;
for(int j=0;j<9;j++){
a[i][j+1]=s[j]-'0';
}
}
int x1,y1;
for(int i=1;i<=9&&!flag;i++){
for(int j=1;j<=9&&!flag;j++){
if(a[i][j]==0){
x1=i;y1=j;goto bb;
}
}
}
bb:;
for(int k=1;k<=9&&!flag;k++){
if(flag)goto cc;
DFS(x1,y1,k);
}
cc:;
for(int i=1;i<=9;i++){
for(int j=1;j<=9;j++){
cout<<a[i][j];
}
cout<<endl;
}
}
}