全球最难的“数独游戏”答案是什么?

发布网友 发布时间:2022-04-24 14:21

我来回答

5个回答

热心网友 时间:2023-10-16 04:06

#include<stdio.h>
int area[10][10];
bool check[10][10],row[10][10],line[10][10];
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;
}
用这个不是更快?

热心网友 时间:2023-10-16 04:06

我是分析每个空格可能填的数,发现右下那个九宫格里面,中间偏左的位置是唯一一个只有两个可能性的方格(3和9),从此开始无尽的假设。方法比较老土,花时间都能够做出来~希望对你有帮助~

热心网友 时间:2023-10-16 04:07

最难的数独游戏是连电脑都做不出来,这才是最难得,原因是无解。。。

热心网友 时间:2023-10-16 04:07

“满足每一行、每一列、每一个粗线宫内的数字均含1-9,不重复”

热心网友 时间:2023-10-16 04:08

这东西是错的,对角线有重复的数字

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com