新人诚心求教,像这种情况下,能否给一个解题思路?就是有没有办
数独吧
全部回复
仅看楼主
level 1
沱江渔妇 楼主
新人诚心求教,像这种情况下,能否给一个解题思路?就是有没有办法用推算的方法,推出一个准确的数字,而不是试错。
遇到这样的,我总是只能用试错的方法,感觉****[笑眼]
2019年04月22日 19点04分 1
level 1
沱江渔妇 楼主
已经通过试错过关了,但是,上图有bug。
2019年04月22日 20点04分 2
level 15
用链来解释A1=6,XYwing
2019年04月23日 00点04分 3
level 9
此题是有问题的。如不管他,则如图示:h3=6
2019年04月23日 01点04分 4
按这张图的状态,不论H1取何值,H3都将无数可填
2019年04月23日 03点04分
level 3
我也看不懂
2019年04月23日 01点04分 5
level 9
可能有一些复杂的数独解得有些慢
如:in.txt=
1
050000000028090000000000010000000502600401000000200000000020008100000040090300000
也可能有一些有多组解得数独只会输出一个
如in.txt=
1
123456089000000000000000000000000000000000000000000000000000000000000000000000000
PS:世界上最难的数独in.txt=
1
0053000008000000200700105004000053000100700060032000800605000090040000300000009700
这个程序可以秒解
2019年04月27日 09点04分 8
level 9
程序:
#include <bits/stdc++.h>
using namespace std;
const int N=9;
bool OK=false;
int num[N+1][N+1];
bool check(int n, int key)
{
for(int i=1;i<=N;i++)
if(num[(n-1)/N+1][i]==key) return 0;
for(int i=1;i<=N;i++)
if (num[i][(n-1)%N+1]==key) return 0;
int x=(n-1)/(3*N)*3+1;
int y=(n-1)%N/3*3+1;
for(int i=x;i<=x+2;i++)
for(int j=y;j<=y+2;j++)
if(num[i][j]==key) return 0;
return 1;
}
bool dfs(int n)
{
if(n>N*N)
return OK=1;
if(num[(n-1)/N+1][(n-1)%N+1])
return dfs(n+1);
for(int i=1;i<=N;i++)
if(check(n,i))
{
num[(n-1)/N+1][(n-1)%N+1]=i;
if(dfs(n+1)) return 1;
num[(n-1)/N+1][(n-1)%N+1]=0;
}
return 0;
}
bool init(int a[N+1][N+1])
{
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
{
char c;
cin>>c;
a[i][j]=c-'0';
}
return 1;
}
bool print(int a[N+1][N+1],bool f1,bool f2,bool f3)
{
for(int i=1;i<=N;i++)
{
for(int j=1;j<=N;j++)
{
cout<<a[i][j];
if(f1)
cout<<" ";
}
if(f2)
cout<<endl;
}
cout<<endl;
if(f3)
cout<<endl<<endl;
return 1;
}
int main()
{
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
int T;
cin>>T;
while(T--)
{
init(num);
OK=0;
dfs(1);
print(num,1,1,0);
cout<<endl;
}
fclose(stdin);
fclose(stdout);
return 0;
}
2019年04月27日 09点04分 10
新建源代码后将这段程序复制进去,按下“F9”编译 然后在这个文件保存的地方放一个名为in的txt文本文档,里面的内容是 第一行:数独的个数n(n< =300) 下面n行:每行81个数,0表示未知数。 完事后双击运行“文件名.exe”就在文件保存处有一个名为out的txt文本文档,里面的内容就是这些数独的解
2019年04月27日 09点04分
1