ps:0-1背包也是一种子集型回溯
注意:递归参数中的 i 不是第 i 个, 而是下标大于等于 i 的这部分
例题:
class Solution: def f1(self, nums): n = len(nums) if n==0: return [] ans = [] path = [] def dfs(i): if i == n: ans.append(path[:]) return dfs(i+1) path.append(nums[i]) dfs(i+1) path.pop() dfs(0) return ans
方法二:
ps:这里的 i 指的是枚举的起点
class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: return self.f2(nums) def f2(self, nums): n = len(nums) ans = [] path = [] def dfs(i): ans.append(path[:]) for j in range(i, n): path.append(nums[j]) dfs(j+1) path.pop() dfs(0) return ans
标签:return,nums,回溯,dfs,子集,ans,path,def From: https://www.cnblogs.com/r1-12king/p/18299143