回溯法模板和相关题目

2020-03-31  本文已影响0人  灰化肥发黑会挥发

回溯法的关键在于要画出一颗遍历树,根据树来确定遍历方法:
模板(有的题目需要添加visited数组记录遍历状态):

        def dfs(target, begin, path):
            # 结束条件
            if target == 0: 
                if path not in res:
                   # python的话一定要加: 才是复制,否则后续操作会修改
                    res.append(path[:]) 
                return
            for i in range(begin, len(candidates)):
                rediduel = target - candidates[i]
               # 减枝条件
                if rediduel < 0:
                    break
                path.append(candidates[i])
                dfs(rediduel, i+1, path)
                #最后要加pop
                path.pop()

相关题目: leetcode: 39, 40, 46, 47, 78, 90

上一篇下一篇

猜你喜欢

热点阅读