python数独问题

本文介绍了使用Python解决数独问题的一种方法,展示了数独的多次遍历结果,后续计划采用回溯法进行再次实现。
摘要由CSDN通过智能技术生成

本想用dfs回溯法解决数独问题的,结果发现好难,现在提供我自己的一种解法,后面有时间再用回溯法做一遍。。。。

#None代表为未确定的数据
A=[
    [7,1,2,None,6,None,3,5,8],
    [None,6,5,2,None,7,1,None,4],
    [None,None,8,5,1,3,6,7,2],
    [9,2,4,None,5,6,None,3,7],
    [5,None,6,None,None,None,2,4,1],
    [1,None,3,7,2,None,9,None,5],
    [None,None,1,9,7,5,4,8,6],
    [6,None,7,8,3,None,5,1,9],
    [8,5,9,None,4,None,None,2,3]
]

def my_dfs():
    global A
    result=[]
    ALL_SET=set({1,2,3,4,5,6,7,8,9,None})#全集
    for i in range(9):
        for j in range(9):
            if A[i][j]==None:
                d={}
                set_x=set(A[i][k] for k in range(9))#横向的集合
                set_y=set(A[k][j] for k in range(9))#纵向的集合
                set_x_y=set_x|set_y
                data=list(ALL_SET-set_x_y)#总的集合-横向纵向的集合=可能解的集合
                d['%s,%s'%(str(i),str(j))]=data
                result.append(d)
    return re
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值