c++模板代码

递归

递归三部曲

回溯

回溯三部曲

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

DFS

深搜三部曲:

  1. 确认递归函数,参数。一般情况需要二维数组保存所有路径,一维数组保存单一路径
vector> result; // 保存符合条件的所有路径
vector path; // 起点到终点的路径
  1. 确认终止条件
  2. 处理目前搜索节点出发的路径:一般这里就是一个for循环的操作,去遍历 目前搜索节点 所能到的所有节点

代码模板:

void dfs(参数) {
    if (终止条件) {
        存放结果;
        return;
    }

    for (选择:本节点所连接的其他节点) {
        处理节点;
        dfs(图,选择的节点); // 递归
        回溯,撤销处理结果
    }
}

滑动窗口

//外层循环扩展右边界,内层循环扩展左边界
for (int l = 0, r = 0 ; r < n ; r++) {
	//当前考虑的元素
	while (l <= r && check()) {//区间[left,right]不符合题意
        //扩展左边界
    }
    //区间[left,right]符合题意,统计相关信息
}

你可能感兴趣的:(c++,开发语言,算法,数据结构,力扣)