回溯
文章平均质量分 69
ych9527
这个作者很懒,什么都没留下…
展开
-
记忆搜索法
出界的路径数普通dfs搜索法传入起始位置的坐标向四个方向进行搜索,如果出界了,计数器增加但是,这种方法因为许多重复搜索,会超时class Solution {public: void _findPaths(int m,int n,int x,int y,int maxMove,int &count,int sub,int num) { if(sub>maxMove)//步伐数超过了 return; if(原创 2021-08-18 18:00:28 · 542 阅读 · 0 评论 -
岛屿问题
1.岛屿的数量给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。题目链接class Solution {public: void Lable(vector<vector<char>> &grid,int x,int y) { if(x<0||x>=grid.si原创 2021-05-04 18:37:24 · 245 阅读 · 1 评论 -
回溯法——矩阵中的路径
文章目录1.题目2.分析1.题目请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“a”,“d”,“e”,“e”]]但矩阵中不包含字符串“abfb”的路径,因为字符串的第一原创 2021-01-13 13:56:45 · 371 阅读 · 0 评论 -
回溯算法
文章目录1.什么是回溯2.解题方法3.实战演练3.1路径的总和3.2路径总和貮3.3子集3.4全排列3.5全排列貮3.6组合1.什么是回溯顾名思义,回溯就是回头的意思。比如我们要达到一个目的地,但是我们面前有三条路,并且只有一条路是可以到达目的地的,因此我们需要一条一条去尝试,如果不行的话就得回到原点,选择下一条路进行尝试,这种就叫做回溯。在我们做题中,常见的组合问题,路径问题,使用回溯法,往往事半功倍。2.解题方法1.将问题描述成树形结构描述成树形结构有利于寻找思路2.通过树的关系,找出子原创 2021-03-18 22:33:28 · 4612 阅读 · 3 评论 -
回溯题目集合——贰
文章目录1.组合总和2.组合总和贰3.组合总和叁1.组合总和给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。题目链接解析:1.需要传递的参数有:临时数组用来临时保存获得的元素。二维数组,当条件满足时将临时数组内的元素拷贝至二维数组。计数器,用来统计当前临时数组内原创 2021-03-21 21:07:41 · 934 阅读 · 2 评论 -
回溯法题目合集——叁
文章目录1.子集21.子集2给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。题目链接.解析过程:返回所有子集,因此不存在判断条件和剪枝条件,每一次递归都需要将临时数组内容拷贝至二维数组之中求子集是求组合,因此元素不能有重复解,因此需要传递一个sub变量作为下标,来控制用过的元素不会再用数组中有重复元素,因此需要去重,去重方法是先排序,再给一个标记数组,如果当前元素和前面一个元素相等,且前面一个元素没有被标记,那么跳过当前元素,进行原创 2021-03-27 14:53:16 · 1066 阅读 · 0 评论 -
电话号码的字母组合
文章目录1.电话号码的字母组合1.电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。解析:class Solution {public: void Getstr( vector<string> &ret,string &digits,string str[],string &temp,int size,int sub)原创 2021-05-02 16:24:17 · 219 阅读 · 0 评论