回溯算法模板
回溯算法模板
void backTracking(参数) {
if(终止条件) {
收集结果;
return;
}
for(遍历元素) {
处理元素;
bakcTracking(参数);
回溯;
}
}
public class Test2 {
public static void main(String[] args) {
int[] a = {1, 2, 3, 4};
new Test2().backTracking(a, 0);
}
int[] a = {1, 2, 3, 4};
new Test2().backTracking(a, 0);
}
// 全局变量
StringBuffer sb = new StringBuffer();
StringBuffer sb = new StringBuffer();
void backTracking(int[] a, int startIdx) {
if (sb.length() == 2) { // 终止条件
System.out.println(sb);
return;
}
if (sb.length() == 2) { // 终止条件
System.out.println(sb);
return;
}
for (int i = startIdx; i < a.length; i++) { // 循环
sb.append(a[i]); // 处理元素
backTracking(a, i + 1); // 递归
sb.deleteCharAt(sb.length() - 1); // 回溯
}
}
}
sb.append(a[i]); // 处理元素
backTracking(a, i + 1); // 递归
sb.deleteCharAt(sb.length() - 1); // 回溯
}
}
}