#include
int area;
bool check,row,line;
void Dfs(int x,int y)
{
if(y==10&&x==9)
{
for(int i=1;i<=9;i++)
{
for(int j=1;j<=9;j++)printf("%d ",area[i][j]);
printf("\n");
}
//ans++;
return;
}
else if(y==10&&x!=9)Dfs(x+1,1);
else if(area[x][y])Dfs(x,y+1);
else
{
for(int i=1;i<=9;i++)
{
if(!row[x][i]&&!line[y][i]&&!check[(x-1)/3*3+(y+2)/3][i])
{
row[x][i]=true;
line[y][i]=true;
check[(x-1)/3*3+(y+2)/3][i]=true;
area[x][y]=i;
Dfs(x,y+1);
row[x][i]=false;
line[y][i]=false;
check[(x-1)/3*3+(y+2)/3][i]=false;
area[x][y]=0;
}
}
}
}
int main()
{
freopen("9num.in","r",stdin);
freopen("9num.out","w",stdout);
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++)
{
scanf("%d",&area[i][j]);
check[(i-1)/3*3+(j+2)/3][area[i][j]]=true;
row[i][area[i][j]]=true;
line[j][area[i][j]]=true;
}
Dfs(1,1);
//printf("%d",ans);
fclose(stdin);
fclose(stdout);
return 0;
}
用这个不是更快?
标签:数独,最难,游戏