```cpp
#include<bits/stdc++.h>
using namespace std;
int sd[10][10];
bool fang[10][10],heng[10][10],shu[10][10];
void print()
{
for(int i=1;i<=9;i++)
{
for(int j=1;j<=9;j++)
{
cout<<sd[i][j]<<" ";
}
cout<<endl;
}
exit(0);
}
void dfs(int x,int y)
{
if(x==10&&y==1) print();
if(sd[x][y]==0)
{
int i;
for(i=1;i<=9;i++)
{
if(heng[x][i]==0&&shu[y][i]==0&&fang[3*((x-1)/3)+((y-1)/3)+1][i]==0)
{
sd[x][y]=i;
heng[x][i]=1;
shu[y][i]=1;
fang[3*((x-1)/3)+((y-1)/3)+1][i]=1;
if(y==9)
{
dfs(x+1,1);
sd[x][y]=0;
heng[x][i]=0;
shu[y][i]=0;
fang[3*((x-1)/3)+((y-1)/3)+1][i]=0;
}
else
{
dfs(x,y+1);
sd[x][y]=0;
heng[x][i]=0;
shu[y][i]=0;
fang[3*((x-1)/3)+((y-1)/3)+1][i]=0;
}
}
}
}
else
{
if(y==9) dfs(x+1,1);
else dfs(x,y+1);
}
}
int main()
{
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++)
{
cin>>sd[i][j];
int temp=sd[i][j];
heng[i][temp]=1;
shu[j][temp]=1;
if(i<=3)
{
if(j<=3) fang[1][temp]=1;
if(j>=7) fang[3][temp]=1;
if(j>=4&&j<=6) fang[2][temp]=1;
}
if(i>=7)
{
if(j<=3) fang[7][temp]=1;
if(j>=7) fang[9][temp]=1;
if(j>=4&&j<=6) fang[8][temp]=1;
}
if(i<=6&&i>=4)
{
if(j<=3) fang[4][temp]=1;
if(j>=7) fang[6][temp]=1;
if(j>=4&&j<=6) fang[5][temp]=1;
}
}
dfs(1,1);
}
```
by silverxz @ 2017-10-27 12:50:32
谢谢大佬,%%%
by partychicken @ 2017-10-27 12:50:55