提出问题
以子集和查字典两道算法为例:
子集:
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>>result=new ArrayList<>();
List<Integer>pastresult=new ArrayList<>();
backtrack(nums,0,result,pastresult);
return result;
}
void backtrack(int[]nums,int start,List<List<Integer>>res,List<Integer>partresult)
{
res.add(new ArrayList<Integer>(partresult));
for(int i=start;i<nums.length;i++)
{
//做选择
partresult.add(nums[i]);
//回溯
backtrack(nums,i+1,res,partresult