ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: yynrzwh

[分享] 优化数独求解

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-8-25 10:57 | 显示全部楼层
我不试了一下。看样子,代码是固定套路,所以结果都是一个答案

TA的精华主题

TA的得分主题

发表于 2024-8-25 11:06 | 显示全部楼层
如果一定要通过试填才能解题,那就绕不开回溯,因为试填肯定会错嘛。

如果有的数独题,肯定会出现无法判断,只能试的情况,那就没办法了,看来人工解题只适合哪种必然存在唯一值的情况,这种数独用代码就是快速找到唯一值,然后更新再继续。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-25 11:10 | 显示全部楼层
zxsea_7426 发表于 2024-8-25 10:57
我不试了一下。看样子,代码是固定套路,所以结果都是一个答案

数独只能有唯一解,
有多个解就不是数独了。
所以求多个解是无意义的,
但判断是不是唯一解就很有用,而且还是要认真想一下的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-25 11:14 | 显示全部楼层
micch 发表于 2024-8-25 11:06
如果一定要通过试填才能解题,那就绕不开回溯,因为试填肯定会错嘛。

如果有的数独题,肯定会出现无法判 ...

人工解法就不是一个一个试了,那是最后没办法的办法
感觉代码模拟人工解法的代码量,至少要比这个多10倍。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-25 11:30 | 显示全部楼层
本帖最后由 yynrzwh 于 2024-8-25 11:47 编辑

有时候看起来很直观,代码写起来一大堆,
可以看一下其中一种高级解法,
感觉一下代码实现难度:

X-Wing法是指某个候选数字,在两行或两列上只出现两次,并且这两行或两列的交叉点正好是这个候选数字所在的列或行。

步骤:
1. 观察候选数字在每行、每列上的位置。
2. 如果某个候选数字在两个行或两个列上只出现两次,并且这两个行或两个列正好交叉于这个数字所在的列或行,那么该候选数字所在列或行中,除了这两个行或两个列上的单元格,其他单元格都不能填入该数字。

上个图


批注 2024-08-25 114209.png

TA的精华主题

TA的得分主题

发表于 2024-8-25 16:06 | 显示全部楼层
试试。。。。。。

数独-求解.rar

31.24 KB, 下载次数: 9

TA的精华主题

TA的得分主题

发表于 2024-8-25 16:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
事件引发崩溃。

TA的精华主题

TA的得分主题

发表于 2024-8-25 16:52 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-25 19:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
rysxing 发表于 2024-8-25 16:06
试试。。。。。。

没看到你的代码

TA的精华主题

TA的得分主题

发表于 2024-8-26 12:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
yynrzwh 发表于 2024-8-25 19:39
没看到你的代码

js。。。。。。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 17:19 , Processed in 0.044405 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表