首页 新闻 会员 周边 捐助

深度优先搜索python 啊哈算法例子不懂

0
[已关闭问题] 关闭于 2019-02-17 08:51

题目是有三张牌,1,2,3 进行组合,最后应该是 123,132,213,231,312,321

我看书上的思想是,先有三个盒子,然后约定好尝试顺序是123的顺序,开始
比如第一次放好了三个位置结果就是123,然后把3收回,发现无尝试可能继续再收回2,发现新可能

132,这样,我用python写了一下版发现不太会写,求指教下面贴出代码(2.7)

class Algorithm(object):
    def __init__(self):
        self.brand = [1, 2, 3]#初始化3个数
        self.n = 0
        self.book = [0, 0, 0]# 用于表几是否使用过 0标识没有
        self.box = [None, None, None] # 初始化3个盒子

    def dfs(self, step):
        if step == self.n:
            print self.box
            return

        for i, v in enumerate(self.brand):
            if self.book[i] == 0:
                self.box[i] = v
                self.book[i] = 1
                self.dfs(step + 1)
                self.book[i] = 0

        return

    def main(self):
        self.n = 3
        self.dfs(1)
        # 123,132,213,231,312,321

if __name__ == '__main__':
    algorithm = Algorithm()
    algorithm.main()
DanBrown的主页 DanBrown | 小虾三级 | 园豆:1321
提问于:2019-01-14 14:24
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册