题目是有三张牌,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()