用程序解九宫格数独

这篇博客探讨了解不完整数独的三种情况:冲突无解、唯一解和多解。通过排除冲突、填入唯一确定数字的方法,逐步解决数独问题。文中提供了不同难度级别的解题思路,并提到已将程序上传至淘宝代码平台供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于给定不完整数独的解有三种情况:

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/





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值