python3 数独解法 深度遍历「建议收藏」

python3 数独解法 深度遍历「建议收藏」19*9的两个数独,一个100多秒,一个只需要不到1秒,所以和递归时尝试的数据顺序有关,具有随机性别太在意速度2逻辑就是某个位置元素的可选范围=set(1..9)-set(当前行所有数据)-set(当前列所有数据)3使用深度遍历,就是假设第一个空时x,测试下一个空,如果后面的空没有选择范围,则抛出错误代码,上一级重新更换value重新测试下一级;#设置参数#宫是xxXyy#这里表示分块依据是2行3列importtime#xx=3..

大家好,欢迎来到IT知识分享网。

1 9*9的两个数独,一个100多秒,同样的代码,一个只需要不到1秒,所以和递归时尝试的数据顺序有关,具有随机性 别太在意速度

2 逻辑就是 某个位置元素的可选范围 = set(1..9) – set(当前行所有数据) – set(当前列所有数据) – set(当前模块)

3 使用深度遍历,就是假设第一个空时x,测试下一个空,如果后面的空没有选择范围,则抛出错误代码,上一级重新更换value重新测试下一级;

 


# 设置参数
# 宫是 xx X yy
# 这里表示分块依据是 2行3列
import time

# xx = 3
# yy = 3

start = time.time()

# 数独维度9
# 未知位置个数:60
# 次数:61963
# 耗时0.4959676265716553s
# xx = 3
# yy = 3
# list_ = [
#     [8, 0, 0, 0, 0, 0, 0, 0, 0],
#     [0, 0, 3, 6, 0, 0, 0, 0, 0],
#     [0, 7, 0, 0, 9, 0, 2, 0, 0],
#     [0, 5, 0, 0, 0, 7, 0, 0, 0],
#     [0, 0, 0, 0, 4, 5, 7, 0, 0],
#     [0, 0, 0, 1, 0, 0, 0, 3, 0],
#     [0, 0, 1, 0, 0, 0, 0, 6, 8],
#     [0, 0, 8, 5, 0, 0, 0, 1, 0],
#     [0, 9, 0, 0, 0, 0, 4, 0, 0]
# ]
# 结果
# [8, 1, 2, 7, 5, 3, 6, 4, 9]
# [9, 4, 3, 6, 8, 2, 1, 7, 5]
# [6, 7, 5, 4, 9, 1, 2, 8, 3]
# [1, 5, 4, 2, 3, 7, 8, 9, 6]
# [3, 6, 9, 8, 4, 5, 7, 2, 1]
# [2, 8, 7, 1, 6, 9, 5, 3, 4]
# [5, 2, 1, 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/25986.html

(0)
上一篇 2023-06-29 14:00
下一篇 2023-06-30 21:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信