/**
* @author tfh, created at 2022-08-08 4:57 PM
*/
public class RecursionAndBacktrackingTemplate {
public static void main(String[] args) {
// 准备数据
prepareData();
// 递归解决问题
recursion();
// 结果处理
processResult();
}
private static void recursion() {
// 终止条件
if (isTheAnswer()) {
addAnswerToResult();
} else {
// 遍历所有子问题
while (hasNextSubProblem()) {
// 准备执行子问题
prepareNextSubProblem();
// 递归解决子问题
recursion();
// 回溯
backtracking();
}
}
}
private static void backtracking() {
}
private static boolean hasNextSubProblem() {
return false;
}
private static void addAnswerToResult() {
}
private static void prepareNextSubProblem() {
}
private static boolean isTheAnswer() {
return false;
}
private static void processResult() {
}
private static void prepareData() {
}
}