回溯法经典例题——python

1.七段码:练习系统
在这里插入图片描述
求解:思路就是组合,首先利用哈希表来存储所有字符和与它邻接的字符,其次求满足要求的组合。代码讲解如下(各位看官可自我进行改进),另一种直接暴力的算法请参考这篇文章

#七段码#组合+回溯
Last={
   'a':['b','f'],'b':['a','c','g'],'c':['b','g','d'],'d':['c','e'],
'e':['d','f','g'],'f':['a','e','g'],'g':['b','c','e','f']}#哈希存储
def bfs(path,s,n):#定义回溯函数
    if len(path)==n:#结束条件
        kk=''.join(sorted(path))#对组合进行大小排序
        if kk not in AA:#是否满足条件要求
            AA.append(kk)#结果增加
        return
    for i in Last[s]:
        if i not in path:#剪枝操作
            path.append(i)#添加路径
            bfs(path,i,n)#下一节点
            path.pop()#路径回溯
if __name__=='__main__'
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值