回溯
文章平均质量分 63
少๑渊
可接课设,详情私聊
展开
-
二叉树搜索序列(回溯)
回溯算法原创 2022-09-16 11:07:52 · 1002 阅读 · 3 评论 -
力扣第1219题:黄金矿工(回溯)
一、题目分析二、题目分析这道题是很常规的回溯题,主要思路大概就是在主函数中,只要不为0的部分就都尝试一遍。在处理函数中,首先如果当前所在点周围没有可以访问的点了,就直接返回当前的黄金值,否则就依次遍历上下左右,找出最大的,这里有关回溯的点是:因为吗,每个点只能访问一次,所以在访问上下左右的时候,要先将当前点置0(节省isvisit空间),遍历之后在取消置零即可。这道题需要注意的点就是在写边界条件时看仔细,否则当你需要的...原创 2022-02-05 10:41:53 · 640 阅读 · 0 评论 -
剑指Offer.12 矩阵中的路径(深度搜索、回溯)
一、题目内容二、题目分析 本题可以使用回溯算法来做,我们需要遍历给定的board,找到所有和word第一个字母开始的位置,如上图,我们需要遍历board,然后找到所有的A。然后从这些开始进行深度搜索,如果可以找到匹配的字符串,就返回true,否则返回false。当一种路径不行的时候,就要通过回溯回到上一步,再进行深度搜索。 对此,在主函数中,我们可以这样写 for(int i=0;i<board.leng...原创 2021-11-25 15:46:11 · 464 阅读 · 0 评论 -
力扣第980题:不同路径(C++回溯,关键代码分析)
一、题目内容二、题目解析class Solution {public: // 网格中0的个数 int cnt=0; int uniquePathsIII(vector<vector<int>>& grid) { int ans=0; int row=0; int col=0; for(int i=0; i<grid.size(); i++) ...原创 2021-10-18 11:48:57 · 192 阅读 · 0 评论 -
力扣面试题08.02.:迷路的机器人(可回溯、可动态规划)
一、题目内容 二、题目分析 机器人从左上角开始运动,每次只可以向右或者向下运动,不可以经过障碍物,到达右下角为成功。 那我们从(0,0)点开始,分别向右向下运动,如果运动的坐标超出的边界或者碰到障碍物或者坐标被访问过,就返回,如果是正常可访问的坐标,就将它放到数组中去,并且给它标记为已访问。 接下来我们需要判断,当前访问的点是否是右下角的点,如果是,就结束一切操作,否则继续向下个坐标进发。class Solution { ...原创 2021-10-17 10:58:35 · 332 阅读 · 1 评论 -
力扣第39题:组合总和(java回溯)
一、题目内容二、题目分析 这道题目的示例[2,3,6,7],可以用下图方式遍历的理解。 如图,首先有四种选择方法,可以在2,3,6,7中任选一个,然后将它加到临时列表中去,之后每层都有四种选择方法(因为可重复选择),每次选择后我们用sum+=选择的值,当我们一直选择到sum等于target的时候,说明我们找到了一种情况满足条件,那我们就将这一临时列表加到结果列表里去,如果sum>target,则说明当前的值不应该选择,直接return即可。只有当sum...原创 2021-10-16 14:54:19 · 169 阅读 · 0 评论 -
力扣第131题:分割回文串(回溯算法详解)
一、前言 前面说过回溯算法是有法可依的,今天拿一道力扣中等题练手,依旧是烂大街的分割回文串二、题目内容三、题目分析 其实回溯算法就是一颗树,树的分支数取决于输入字符串的长度。拿最简单的例子说,当输入的字符串为“aab”时,我们第一次选择有几种方法? 如果选择了a,那么第二次选择是就把ab当做一个新的字符串处理 如果选择了aa,那么第二次选择就是把b当做一个新的字符串处理 如果选择了aab,那...原创 2021-10-15 13:53:24 · 474 阅读 · 2 评论 -
力扣第46/47题:全排列(回溯算法深度好题)
一、前言 昨天说了,今天开始回溯算法的题目,今天看了两题非常经典的题目,感觉回溯的套路比动态规划更为明显。今天为什么说两题呢,因为其实47就是46的升级版而已,由无重复数字到有重复数字,我感觉一起讲更有助于理解。话不多说,看题二、题目内容三、题目分析首先来看第46题,一个无重复数字的数组求可能全排列,再一看示例内容,呵!这不是排列组合嘛!nums长为3,那答案就是A33=6,没错!确实是这样。但是如果让大家写出每一种情况,可能大家会这样写(假设num...原创 2021-10-14 15:13:10 · 281 阅读 · 2 评论