博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数独1--暴力回溯法(时间超)
阅读量:6240 次
发布时间:2019-06-22

本文共 1584 字,大约阅读时间需要 5 分钟。

数独1--暴力回溯法(时间超)

一、心得

可用暴力搜索法(找唯一数单元格)和算法求解

先回顾之前的三篇文章

“”,介绍求解数独的基本的暴力搜索法

“”,网友介绍的求解数独的舞蹈链(Dancing Links)算法,这篇文章是介绍舞蹈链(Dancing Links)算法的。

“”,该文介绍了用舞蹈链(Dancing Links)算法求解数独,并给出了暴力破解法和舞蹈链(Dancing Links)算法之间的时间和空间占用效率的对比。

二、题目及分析

 

三、代码

时间超,未解决

1 /*  2 0 0 0 5 0 0 0 0 7  3 4 8 0 0 0 6 3 2 0  4 0 0 9 4 0 0 0 0 8  5 5 0 0 3 0 7 0 0 0  6 8 0 7 0 9 4 1 5 2  7 2 9 6 8 1 0 0 0 4  8 3 5 2 7 4 9 8 1 6  9 7 4 0 1 6 3 2 9 0 10 0 6 1 0 5 0 0 0 3 11 算法: 12 有点像八皇后问题  13 每一列至少都有一个 14 每一行至少有一个 15 每一个3*3小方框里面至少有一个 16  17 总过有9列,c[i][j]==1表示第i列的数字j已经有了 18 总过有9行,r[i][j]==1表示第i行的数字j已经有了 19 总过有9行,q[i][j]==1表示第k(从上到小,从左到右)个3*3的框数字j已经有了  20  21 只能摆那些没有被数字占了的位置 22  23 优化1:1-9每个数字只能出现9次 24 numTimes[i]表示数字i出现的次数  25   26   27 */  28  29 #include 
30 #include
31 using namespace std; 32 int c[10][10],r[10][10],q[10][10]; 33 int num[10][10]; 34 int numTimes[10]; 35 int step=0; 36 37 void readDate(){ 38 for(int i=1;i<=9;i++){ 39 for(int j=1;j<=9;j++){ 40 int x; 41 cin>>x; 42 if(x){ 43 step++; 44 numTimes[x]++; 45 num[i][j]=x; 46 r[i][x]=1; 47 c[j][x]=1; 48 //找到行列对应的小方框 49 int m=(i-1)/3*3; 50 int n=(j-1)/3; 51 int t=m+n+1; 52 q[t][x]=1; 53 } 54 55 } 56 } 57 } 58 59 void printData(int a[10][10]){ 60 for(int i=1;i<=9;i++){ 61 for(int j=1;j<=9;j++){ 62 printf("%3d",a[i][j]); 63 } 64 cout<

 

转载地址:http://xkdia.baihongyu.com/

你可能感兴趣的文章
非监督学习算法:异常检测
查看>>
jquery的checkbox,radio,select等方法总结
查看>>
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
我的友情链接
查看>>
ElasticSearch 2 (32) - 信息聚合系列之范围限定
查看>>
VS2010远程调试C#程序
查看>>
windows查看端口占用
查看>>
Yii用ajax实现无刷新检索更新CListView数据
查看>>
App 卸载记录
查看>>
JavaScript变量和作用域
查看>>
开源SIP服务器加密软件NethidPro升级
查看>>
Apache Pulsar中的地域复制,第1篇:概念和功能
查看>>
python pip install 出现 OSError: [Errno 1] Operation not permitted
查看>>
从源码分析scrollTo、scrollBy、Scroller方法的区别和作用
查看>>
ObjectOutputStream和ObjectInputStream
查看>>
南京大学周志华教授当选欧洲科学院外籍院士
查看>>
计算机网络与Internet应用
查看>>
oracle在线迁移同步数据,数据库报错
查看>>
linux性能剖析工具
查看>>