基础算法模板
组合型回溯
在子集型回溯的基础上,只需要加上一些剪纸就可以
排列型回溯
# 全排列 给定1 2 3,输出所有顺序的组合
public void dfs(int i){
if (i == shu.length){
result.add(new ArrayList<>(temp));
return;
}
for (int j = 0; j < shu.length;j++){
if (!flag[j]){
temp.add(shu[j]);
flag[j] = true;
dfs(i + 1);
flag[j] = false;
}
}
}
总体的思路还是和原来的一样,将题目转换成为两个数组,第一个数组是已经选择的数组,第二个数组是暂时还没有选择的数组。
那么如何对这两个数组进行记录,我们可以一个boolean数组,其中使用true表示当前数已经被选择,false表示暂时还没有被选择。