世界上最难的数独游戏的答案是什么?

# include & ltstdio.h & gt

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;

}

用这个不是更快吗?