用程序解九宫格数独
来源:互联网 发布:seo黑链代码 编辑:程序博客网 时间:2024/06/08 19:06
关于给定不完整数独的解有三种情况:
1,数独中的数字有冲突,无解。
2,数独中的数字没有冲突,并且有且只有一个解。
3,数独中的数字没有冲突,有多个解。
以上三种情况是得到不完整数独的解,所面对的情况。
1,1 设想一个不完整的数独有冲突数字。在进行填数字前,就要判断出来。然后报告这个数独有冲突数字。
2,2 设想一个不完整的数数独有唯一数独解,那么每一个格中的数字都是唯一确定的。只是我们不知道是具体数值。那么我们就可以先找出这种唯一确定的数字啦。
3,3设想一个不完整的数独有多个解,那么可以先找出唯一确定的那些数字位置。然后剩下的空方格就有多种情况了。
其中数独有多少种可能呢? 如果是9x9的格式,则有十的八十一次方中可能数独(含有冲突项)。
难度第一简单思路:
所以使用暴力的方式进行一一列举,尝试得到一个不完整数独的解,似乎不太可能。于是,猜想应该排除有冲突的数独。
难度第二简单思路:
这时,思路有了。当尝试向数独中填入一个数字X(随便取的一个变量名)时,要判断X不与已经存在的数字重复(冲突)。
其中以上的数字重复包括,X所在的行不重复,X所在的列不重复,X所在的小九宫格不重复。然后再尝试下一个数字的填入。这种思路可以得到数独的解,仔细像,好像存在漏洞。填入数字有可能重复。没有排除已存在项(具体操作有点麻烦,不建议用递归实现(内存占用过多))。
难度第三简单思路:
这是由2.2的说明可知,可以优先填入这种唯一确定的数字空格。当然上一次的填入会对当前这次的填入产生影响。这就促进了当前这一次的填入。如此循环填入唯一确定数字,就可以将所有的唯一确定值填完了。如果此时数独已经填完整了,那么这就是一个唯一确定的数独。否则就是一个多种解数独。
补充:如果是多解数独那么可以参照难度第二简单思路得到一个完整数独。
关于以上思路程序(window版 android版)上传到了taocode平台上。http://code.taobao.org/svn/shudu_programe/ 或者 http://code.taobao.org/p/shudu_programe/wiki/index/
- 用程序解九宫格数独
- 九宫格程序
- 微信小程序实现九宫格
- 解锁图案-九宫格有多少种组合?安全吗?用程序来解答
- 【基于java的九宫格求解程序】
- 【lufylegend】年会九宫格抽奖程序
- android中写一个九宫格程序
- 小程序开发系列(二)九宫格
- JavaScript九宫格数独生成算法
- A算法解九宫格
- 用Java实现九宫格
- 基于A*算法的八数码问题(九宫问题)解法的程序实现(新增有无解判断)
- C++编写九宫格程序,要求和为15
- 仿linux系统九宫格屏保程序:js网页版
- Android 实现类似九宫格的程序锁
- 小程序开发系列(四)九宫格另一种实现
- 黄秀杰--小程序实现选择图片九宫格带预览
- 小程序实现选择图片九宫格源码资源
- js日期加减
- Python3学习(22)--类的属性和实例的属性
- Python爬虫实战(二):爬取天涯帖子(只看楼主)
- 在学习Python的类和实例时,碰到的错误: object() takes no parameters
- 定时器 settimer ontimer killtimer
- 用程序解九宫格数独
- swoole+Redis实现实时数据推送
- Ajax工作原理
- 在win7上安装keras的一点人生经验
- 1033. 旧键盘打字(20)
- Spring框架——事务处理(编程式和声明式)
- 给新人程序员一些经验
- c# 通用的工具类(CommonLibrary)
- 【学习笔记】nginx静态页面部署