世界上最难的数独游戏的答案是什么?
int area[10][10];
bool check[10][10],第[10]行[10][10]行;
void Dfs(int x,int y)
{
if(y = = 10 & amp;& ampx==9)
{
for(int I = 1;我& lt=9;i++)
{
for(int j = 1;j & lt=9;j++)printf("%d ",area[I][j]);
printf(" \ n ");
}
//ans++;
返回;
}
else if(y = = 10 & amp;& ampx!=9)Dfs(x+1,1);
else if(area[x][y])Dfs(x,y+1);
其他
{
for(int I = 1;我& lt=9;i++)
{
如果(!行[x][I]& amp;& amp!第[y][i]行& amp& amp!检查[(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;
面积[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;我& lt=9;i++)
for(int j = 1;j & lt=9;j++)
{
scanf("%d ",& amp面积[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);
返回0;
}
用这个不是更快吗?