编程解决数独问题,效率和简洁并存

30 篇文章 16 订阅 ¥29.90 ¥99.00
101 篇文章 2 订阅
95 篇文章 2 订阅

编程解决数独问题,效率和简洁并存

没事玩玩数独,挺好的。最近吸引力最大的还是数独,看了网络上很多程序,受到许多启发,自己也试尝编了一个程序。收集了几个难易程度不等的数独题作为测试,感觉效率还可以,代码还算简洁,最复杂的那个数独题破解时间大约3秒(不同性能的电脑花费时间会有差异)。
解题的思路大致是这样的:
步骤1:统计零点坐标和它们的可填数字序列。
步骤2:在零点列表中找到可填数最少的那个点。
步骤3:从这个点开始试尝它的第一个(第N个)可填数字,把这个数字填到数独中去,并记录在案(放在解决列表的最后,出栈的原则是后进先出)。
步骤4:因为填入了数字,零点减少了,它们的可填数字也变少了,因此,对这些数据重新进行统计,即进行动态调整。如果动态调整是可行的,说明可以进入下一个点的试尝。找到可填数最少,且距上一个填充点步长最近的那个点,重复步骤3,直至填充结束。如果动态调整失败,进入步骤5。
步骤5:重复步骤3,试尝这个点的下一个可填数字,把这个数字填到数独中去,并记录在案。重复步骤4。如果一个点所有可填数字都试尝不成功,说明它前面的那个点所填的数字有问题,返回到上一个点,更换可填数字,继续步骤3。如果返回到第一个点,它所有的可填数字都试尝不成功,说明数独无解。

""&
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值