- class Solution:
- def subsets(self, nums: List[int]) -> List[List[int]]:
- res=[]
- path=[]
- def backtrack(index):
- res.append(path[:])
- if index==len(nums):
- return
- for i in range(index,len(nums)):
- path.append(nums[i])
- backtrack(i+1)
- path.pop()
- backtrack(0)
- return res
本题中终止条件可有可无,for循环会自动结束
回溯模板:
void backtracking(参数) {
if (终止条件) {
存放结果;
return;
}
for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
处理节点;
backtracking(路径,选择列表); // 递归
回溯,撤销处理结果
}
}