回溯模板
import java.util.*;
public class Main {
static int a[] = new int[1001];
static boolean st[] = new boolean[1001];
static List<Integer> path = new ArrayList<>();
public static void main(String[] args) {
}
public void dfs(int start,int a[],List<Integer> path){
//路径长度等于所指定的长度
if(path.size()==k){
}
/*如果需要取的数在start面前,则我们需要用到st数组来进行筛选,并且
for(int i=0;i<n;i++)
*/
/*
如果需要取的数在start的后面,则我们不需要st数组来进行筛选,并且
for(int i=start;i<n;i++)
*/
for(int i=start;i<n;i++){
//进行完成任务的操作
path.add();
dfs(i+1,a,path);
path.remove(path.size()-1);
}
}
}
注意
画一下二叉搜索树,这样可以使得思路更加清晰。一种是”取值” 二叉树,另一种是”选不选”二叉树。