类型总结之——DP动态规划
动态规划
Mona______
好好学习天天向上 o(≧v≦)o
展开
-
动态规划总结点睛
终于到这个专题啦 ~~~ 激动的搓手手!一、基础知识动态规划:Dynamic Programming (DP),如果某一问题有很多重叠子问题,实验DP是最有效的因此只要是 当前状态可以根据前面的状态推出来 的题型,就能用动归。动态规划中每一个状态一定是由上一个状态推导出来的,这一点区分与贪心,贪心没有状态推导,而是从局部直接选最优、贪心解决不了动态规划的问题。01、花花讲解要求:最优子结构可以通过把它分解成子问题,然后递归地找到子问题的最优解来得到最优解。重叠子问题子问题是重叠的,这样我们只原创 2021-06-20 23:44:21 · 1032 阅读 · 1 评论 -
leetcode——第10题——正则表达式匹配
题目:给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。示例 1:输入:s = “aa” p = “a”输出:false解释:“a” 无法匹配 “aa” 整个字符串。/*正则表达式:字符串匹配动态规划:1、dp[i][j] 表示s在以i结尾的字符串,和p中以j结尾的字符串,是否匹配,匹配为1,不匹配为0由于字符串从原创 2021-07-02 21:38:23 · 180 阅读 · 0 评论 -
leetcode——第5题——最长回文子串
题目:给你一个字符串 s,找到 s 中最长的回文子串。class Solution {public: string longestPalindrome(string s) { vector<vector<bool>> dp(s.size(), vector<bool>(s.size(), false)); string result; // 记录回文子串 int len = 0; // 记原创 2021-05-23 00:13:29 · 101 阅读 · 0 评论 -
leetcode——第516题——最长回文子序列
题目:给定一个字符串 s ,找到其中最长的回文子序列,并返回该序列的长度。可以假设 s 的最大长度为 1000 。class Solution {/*本题是求回文子序列,也就是不要求连续咯~本题初始化非常特殊,要着重记忆一下。这个类型题中的 dp 数组,需要把一个字符串从两个维度来分析,展成一个二维的,有点不太习惯,需要画图做题适应一下。动态规划五部曲:* 1、确定 dp 数组以及下标的含义 * dp[i] [j] : 字符串 s 在 [i, j] 范围内最长的回文子序列的长度原创 2021-05-22 22:18:23 · 275 阅读 · 0 评论 -
leetcode——第647题——回文子串
题目:给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。class Solution {/*解法二:动态规划五部曲:* 1、确定 dp 数组以及下标的含义 * 本题比较特殊哦,使用了 布尔类型的 dp 数组 * dp[i] [j] :表示区间范围是 [i, j] (注意是左闭右闭区间)的子串是否是回文子串, * 如果是 dp[i] [j] = true, 如果不是 dp[i] [j] =fa原创 2021-05-22 19:44:17 · 98 阅读 · 0 评论 -
leetcode——第71题——编辑距离
题目:给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符class Solution {/*动态规划五部曲* 1、确定 dp 数组以及下标含义 * dp[i] [j] 表示以下标 i-1 为结尾的字符串 word1 和 以下标 j-1 为结尾的字符串 word2,最少的编辑距离为 dp[i] [j] * 这部分题中有好多次出现表示的都是 i-1 和原创 2021-05-22 18:28:03 · 87 阅读 · 0 评论 -
leetcode——第583题——两个字符串的删除(不连续)
题目:给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。class Solution {/*态规划五部曲:* 1、确定 dp 数组以及下标含义 * 题意是:找到使word1和word2相同所需的最下步数,每一步可以删除任意一个字符串中的一个字符。 * dp[i] [j] :以 i-1 结尾的 word1,和以 j-1 结尾的 word2,达到相同所走的最小步数,也就是删除元素的最少次数。* 2、确原创 2021-05-22 17:51:10 · 177 阅读 · 0 评论 -
leetcode——第115题——不同的子序列
题目:给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)题目数据保证答案符合 32 位带符号整数范围。class Solution {/*动态规划五部曲:* 1、确定 dp 数组以及下标的含义 * dp[i] [j]: 以 i-1 结尾的 s 字符串的子序列 出现在 以 j-1 结尾原创 2021-05-22 17:10:51 · 164 阅读 · 0 评论 -
leetcode——第392题——判读子序列(编辑距离)
题目:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。进阶:如果有大量输入的 S,称作 S1, S2, … , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?class Solution {/*动态规划五部曲* 1、确定dp数组以及下标的含义 * dp原创 2021-05-22 15:52:25 · 73 阅读 · 0 评论 -
leetcode——第53题——最大子序和
题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。class Solution {public: // int maxSubArray(vector<int>& nums) // { // // 贪心算法: 因为负数总是会拉低总和,所以当遇到负数,就将 sum 清0, // // result 中一直更新最大的 sum ,这样遍历一遍之后得到的就是 最大自序和 //原创 2021-05-09 22:21:26 · 71 阅读 · 0 评论 -
leetcode——第1035题——不相交的线
题目:在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足满足:nums1[i] == nums2[j]且绘制的直线不与任何其他连线(非水平线)相交。请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。以这种方法绘制线条,并返回可以绘制的最大连线数。class Solution {/*直线不能相交,这就是说明在字符串A中,找到一个与字符串B相同的子序列,且这个原创 2021-05-22 14:40:57 · 517 阅读 · 0 评论 -
leetcode——第1143题——最长公共子序列
题目:给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。class Solution {/*dp[i][j] 长度为[0原创 2021-05-22 14:21:47 · 106 阅读 · 0 评论 -
leetcode——第718题——最长重复子数组(连续子序列)
题目:给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。class Solution {/*dp[i][j] 以 i-1 结尾的A数组和以 j-1 结尾的B数组公共最长的子数组(也就是连续子序列)是dp[i][j]为什么表示 i-1 和 j-1 对应的状态呢?你想想如果不这样,你还需要找前一个的状态,在初始化的时候就没那么顺理成章了所以纯属是为了方便写代码啦*/ public: // int findLength(vector<int>原创 2021-05-22 13:46:38 · 497 阅读 · 0 评论 -
leetcode——第674题——最长连续递增序列
题目:给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], …, nums[r - 1], nums[r]] 就是连续递增子序列。class Solution {/*方法一: 动态规划dp[i] 表示以下标 i 结尾的最长连续递增子序列的长度原创 2021-05-22 13:16:40 · 291 阅读 · 0 评论 -
leetcode——第300题——最长递增子序列
题目:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。class Solution {/*动态规划五部曲* 1、确定 dp 数组以及下标的含义 * dp[i] 表示 包括 i 以及它前面的最长上升子序列* 2、状态转移方程 * 位置 i 的最长升序子序列等于 j 从 0 到 i-1 各个位置的最长上升子序列 +原创 2021-05-21 17:20:15 · 162 阅读 · 0 评论 -
leetcode——第714题——可以买卖多次股票(每次有手续费)
题意:给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。// /*// 这题贪心有点难想的到,就怎么处理计算利润,已经如何更新 minPrice很饶。// 贪心思想:最低值买,最高值(最低价格+手续原创 2021-05-13 19:39:15 · 438 阅读 · 0 评论 -
leetcode——第309题——含冷冻期的股票
题目:给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。class Solution {/*动态规划五部曲:* 1、确定 dp 数组以及下标的含义 * dp[i] [j],第i天状态为j,所剩的最多现金为dp[i] [j]。 * j = 0原创 2021-05-21 16:35:55 · 140 阅读 · 0 评论 -
leetcode——第188题——最多可以买K次股票V4
题目:给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。class Solution {/*dp[i][j] i 表示对第 i 支股票的操作,j 为奇数表示买入,j 为偶数表示卖出找规律:::dp[i][0]dp[i][1] 第一次买入dp[i][2] 第一次卖出dp[i][3]原创 2021-05-21 15:05:37 · 197 阅读 · 0 评论 -
leetcode——第123题——最多买两次股票
题目:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。class Solution {/*动规五部曲:* 1、确定 dp 数组以及下标的含义 * dp[i] [j] :i 表示第 i 天, j 表示 0-4 的五种状态,整体表示,第 i 天在状态 j 下所剩的最大现金 * 一天可能有的状态有以下五种: * 0 :不做任原创 2021-05-21 14:44:23 · 343 阅读 · 0 评论 -
leetcode——第122题——可以买卖多次股票
题目:给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。class Solution {// 贪心算法::其实就是求相邻两天的利润,然后只取正数,也就是局部最优// 因为连续几天的利润也是相邻两天的利润的总合嘛~~// 如第0天买入,第3天卖出,那么利润为 prices[3] - prices[0],原创 2021-05-09 22:53:22 · 96 阅读 · 0 评论 -
leetcode——第121题——只买一次股票
题目:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。class Solution {public:// /***********************方法一:暴力解法***************************************/原创 2021-05-21 11:49:55 · 747 阅读 · 0 评论 -
leetcode——第337题——打家劫舍V3—树形递归
题目:在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。/** * Definition for a binary tree node. * struct TreeNode { *原创 2021-05-20 23:53:29 · 107 阅读 · 0 评论 -
leetcode——第213题——打家劫舍V2
题目:你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。class Solution {public: int rob(vector<int>& nums) {原创 2021-05-20 22:26:16 · 121 阅读 · 0 评论 -
leetcode——第198题——打家劫舍
题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。class Solution {public: int rob(vector<int>& nums) { // 打家劫舍是 dp 解决的经典问题。原创 2021-05-20 21:50:14 · 65 阅读 · 0 评论 -
leetcode——第139题——单词拆分
题目:给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。/*本题有两种方法:方法一:回溯法与回溯算法中的 第131题 分割回文串 比较相似,整体思路,枚举分割后的所有子串,判断是否在字典里出现过时间复杂度 O(2^n),因为每个单词有两个状态,切割,或者不切割空间复杂度:O(n),算法递归系统调用栈的空间普通的回溯法 超时了,使用记原创 2021-05-20 21:19:52 · 209 阅读 · 0 评论 -
leetcode——第279题——完全平方数
题目:给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。给你一个整数 n ,返回和为 n 的完全平方数的 最少数量 。完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。class Solution {/*将本题翻译为 完全背包问题:完全平方数 就是物品,可以无条件使用凑个整数 n 就是背包的最大容量为 n原创 2021-05-20 15:20:29 · 243 阅读 · 0 评论 -
leetcode——第322题——零钱兑换
题目:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。class Solution {/*本题属于完全背包问题:本题中的dp数组的下标和含义要依据题意来变一下dp[j] 凑足总金额为 j 所需铅笔的最少个数为 dp[j]动规五部曲:1、确定dp数组及其下标含义dp[j] 凑足总金额为 j 所需铅笔的最少个数为 dp[j]2、确定递推公原创 2021-05-19 18:05:07 · 73 阅读 · 0 评论 -
leetcode——第377题——组合总和V4
题目:给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。题目数据保证答案符合 32 位整数范围。class Solution {/*完全背包问题:每个零钱可以取无限次,总和target就是背包的容量,物品就是nums数组同理本题也是求有多少种装满背包的方法,需要考虑一下是 排列 还是 组合本题中顺序不同的序列被视作不同的组合,因此是排列因此遍历顺序就是需要先 背包容量,再物品排列与组合的原创 2021-05-19 16:56:48 · 100 阅读 · 0 评论 -
leetcode——第518题——零钱兑换V2
题目:给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。class Solution {/*转换为完全背包问题但是本题和纯完全背包还是不一样的,纯完全背包是 能否凑成总金额而本题是要求能凑成多少个总金额,这里强调的是组合,而不是排列哦~~~关于递推公式:这道题与 494 递推公式一样!还记得吗?求装满背包有几种方法: dp[j] = dp[j] + dp[j - nums[i]]关于遍历顺序:如果是求组合数:外层for遍历物品,内原创 2021-05-19 15:58:18 · 130 阅读 · 0 评论 -
leetcode——第474题——一和零
题目:给你一个二进制字符串数组 strs 和两个整数 m 和 n 。请你找出并返回 strs 的最大子集的大小,该子集中 最多 有 m 个 0 和 n 个 1。如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。示例 1:输入:strs = [“10”, “0001”, “111001”, “1”, “0”], m = 5, n = 3输出:4解释:最多有 5 个 0 和 3 个 1 的最大子集是 {“10”,“0001”,“1”,“0”} ,因此答案是 4 。其他满足题原创 2021-05-17 23:47:15 · 215 阅读 · 0 评论 -
leetcode——第494题——目标和
题目:给你一个整数数组 nums 和一个整数 target 。向数组中的每个整数前添加 ‘+’ 或 ‘-’ ,然后串联起所有整数,可以构造一个 表达式 :例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+2-1” 。返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目/*分析: 式一:left - right = target; 式二: left + right = sum 式一 与原创 2021-05-17 21:52:57 · 588 阅读 · 0 评论 -
leetcode——第1049题——最后一块石头的重量
题目:有一堆石头,每块石头的重量都是正整数。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回 0。class Solution {// dp[j] 表示容量为 j 的背包,所装物品的最大价值为原创 2021-05-17 19:53:02 · 116 阅读 · 0 评论 -
leetcode——第416题——分割等和子集
题目:给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。class Solution {/*转化为 01背包问题:确定四点:1、背包的体积为 sum/22、背包中要放入的 商品重量 为 元素的数值,价值 为 元素的数值3、背包如果正好装满,说明找到了总和为 sum/2 的子集4、背包中的每一个元素不可以重复放入。动态规划五部曲:1、确定dp数组以及下标的含义dp[j] 表示容量为j的背包,所背的物品价值最大可以为原创 2021-05-17 18:47:40 · 208 阅读 · 0 评论 -
一维 dp 数组解决完全背包问题
题目:背包的最大重量为 4,有3件物品,物品对应的重量和价值为:weight = { 1, 3, 4 };value = { 15, 20, 30 };假设每个物品有无数件,求解将哪些物品装入背包里的物品价值总和最大。// 完整代码void test_CompletePack(){ vector<int> weight{1, 3, 4}; vector<int> value{15, 20, 30}; int object = weight.size(); int原创 2021-05-16 21:56:16 · 359 阅读 · 0 评论 -
一维 dp 数组解决 01 背包问题
题目:背包的最大重量为 4,有3件物品,物品对应的重量和价值为:weight = { 1, 3, 4 };value = { 15, 20, 30 };将哪些物品装入背包里的物品价值总和最大。// 完整代码void test_1_wei_bag_problem(){ vector<int> weight = { 1, 3, 4 }; vector<int> value = { 15, 20, 30 }; int object = weight.size(); i原创 2021-05-16 21:06:32 · 483 阅读 · 0 评论 -
二维 dp 数组解决 01 背包问题
题目:背包的最大重量为 4,有3件物品,物品对应的重量和价值为:weight = { 1, 3, 4 };value = { 15, 20, 30 };将哪些物品装入背包里的物品价值总和最大。// 完整代码void test_2_wei_bag_problem1(){ vector<int> weight = { 1, 3, 4 }; // 物品重量 vector<int> value = { 15, 20, 30 }; // 物品价值 int object原创 2021-05-16 21:05:24 · 107 阅读 · 0 评论 -
leetcode——第96题——不同的二叉搜索树
题目:给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。class Solution {public: int numTrees(int n) { // 1、确定dp数组的下标及其含义 // 2、找出递推关系 dp[i] = dp[i] + dp[j - 1]*dp[i-j] // dp[j-1]是以 j-1 为头结点左子树节点数量, dp[i-原创 2021-05-16 13:50:49 · 373 阅读 · 1 评论 -
leetcode——第343题——整数拆分
题目:给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。class Solution {// public:// /*************************法一::动态规划***********************************/// // 时间复杂度:O(n^2) 空间复杂度:O(n)// int integerBreak(int n) // {// // 1、确定原创 2021-05-16 00:11:23 · 98 阅读 · 0 评论 -
leetcode——第63题——不同路径V2
题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?class Solution { // 这道题与上一题的思路基本一样,只不过就是在处理 dp 数组的时候 // 多了一个判断的条件,思路还是五步走,便不再详述public: int uniquePathsWithObs原创 2021-05-15 15:58:29 · 159 阅读 · 0 评论 -
leetcode——第62题——不同路径
题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?class Solution {// private:// // 方法一:图论中的深搜。将题目等价为一棵二叉树,叶子的节点就是终点// int travel(int i, int j, int m, int n)// {// // 定义原创 2021-05-14 14:58:28 · 145 阅读 · 0 评论