DFS
_amnesia_
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode 78. 子集
题解 dfs+ 剪枝? 回溯 从当前位置开始搜索,有两种选择,要 或者 不要 当选择的次数和数组的次数相同的时候就是递归终止的条件。 代码 class Solution { public: vector<int>t; vector<vector<int>> ans; //dfs + 剪枝 void dfs(int cur, vector<int>&nums){ //递归结束原创 2021-06-20 19:43:09 · 153 阅读 · 0 评论 -
leetcode 39. 组合总和
题解 求目标解的组合数,dfs很容易解出。 对于每一个数,都有两种办法 选择 或者不选择来选择下一个,选择的话在是否继续选择还是不选择选择下一个。 官方题解写的很清楚官方题解 代码 class Solution { public: void dfs(vector<int>&candidates,int target,vector<vector<int>>&ans,vector<int>& combine,int idx){原创 2021-04-15 11:17:29 · 108 阅读 · 0 评论 -
leetcode 778. 水位上升的泳池中游泳 (二分 + DFS)
题解 不知道为什么要把它定义为难题,和昨天做的那道题很相似。 这道题的意思就是要找到一条路径使它的最大值为最小值。 所以找到最大值和最小值直接进行二分搜索即可判断当前值是否可以找到一条路径如果找不到那值就进行放大,找到了值就进行缩小。 如何搜索路径 dfs 进行深度搜索判断当前条件下是否存在一条路径。 需要注意的是最小值不是0而是开始进入的第一个值。 如有错误欢迎指正~ 代码如下 在这里插入代码片 ...原创 2021-01-30 15:22:55 · 197 阅读 · 0 评论 -
leetcode 1631. 最小体力消耗路径 (二分 + DFS)
题解 二分 + dfs 题目中给出的 <=1heights[i][j]的取值范围 =<10000000 那么最大值为99999,最小值为0,那么就可以-二分,从中间开始查找这个最大值是否可以走到右下角,如果可以那么继续二分搜索最小的最大值。 dfs 深度搜索是否有一条路径可以到达右下角,并且两个距离之间的差的绝对值 <= mid 代码 class Solution { public: bool dfs(vector<vector<int>>& hei原创 2021-01-29 19:31:39 · 208 阅读 · 0 评论 -
leetcode 200. 岛屿数量
题解 刚刚做了一下,在做完刚才这题之后这道题就很好做了。 dfs 爆搜即可,进行上下左右的搜索找到一块。 代码 class Solution { public: void dfs(vector<vector<char>>&grid ,int i,int j){ if(i >= 0 && i < grid.size()&& j >= 0 && j < grid[0].size()&a原创 2021-01-25 21:10:50 · 114 阅读 · 0 评论 -
leetcode959. 由斜杠划分区域
题解 和200. 岛屿数量题目相似 用dfs 搜索 1.首先 \ 或者\ 扩大为3倍应该比较好算一些,首先进行遍历,把边界都标记为1,然后搜索为0的区域的个数,搜索一个区域res++,最后res即为最终结果。 代码如下 class Solution { public: void dfs(vector<vector<int>>&g ,int i,int j){ if(i >= 0 && i < g.size() &&a原创 2021-01-25 20:42:18 · 115 阅读 · 0 评论
分享