模板
分治
模板
private static int divide_conquer(Problem problem,): # recursion terminator if (problem == NULL){ int res = process_last_result(); return res; } int subproblem = split_problem(problem) # conquer subproblems int res0 = divide_conquer(subproblem[0]) int res1 = self.divide_conquer(subproblem[1]) # process and generate the final result int result = process_result(res0,res1) return result;}
回溯

模板
void backtracking(参数) { if (终止条件) { 存放结果; return; } for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { 处理节点; backtracking(路径,选择列表); // 递归 回溯,撤销处理结果 }}