男人精子少是什么原因| 脱发是什么原因| 怀孕梦到老公出轨预示什么| 看嘴唇挂什么科| 重字五行属什么| 麦芽糖是什么糖| 桑是什么意思| 打喷嚏是什么意思| 后背疼痛是什么原因| 胸疼挂什么科室| 发难是什么意思| 肚脐眼右边是什么器官| 处方药是什么意思| 当归和党参有什么区别| 黄金桂是什么茶| 什么是友谊| 日语一库一库是什么意思| 胃寒是什么原因引起的| 蛇为什么会咬人| 政协副主席是什么级别| 降头是什么意思| 做包子用什么面粉| 人为什么会得白血病| 手腕比喻什么| 龙井茶什么季节喝最好| 蟹粉是什么| 1989年出生是什么命| 糖化血红蛋白高是什么原因| 胃疼拉肚子吃什么药| 怀孕不到一个月有什么症状| 7月1日是什么日子| 甲状腺应该挂什么科| 什么是粉尘螨过敏| 60岁生日送什么礼物| 乳头痒是什么原因| 儿童上火了吃什么降火最快| 一个骨一个宽是什么字| 孩子高烧不退是什么原因| 冬天吃什么| 龙眼是什么季节的水果| 连云港有什么特产| 低血压是什么意思| 熹字五行属什么| 为什么拉肚子| 日光性皮炎用什么药膏| 地雷是什么意思| 13点是什么时辰| 3p 什么 感觉| 六尘不染的生肖是什么| score是什么意思| 世交是什么意思| 什么是非萎缩性胃炎| 听阴天说什么| 圆脸适合什么刘海| 用膳是什么意思| 荷叶茶有什么功效和作用| 为什么人会衰老| 好事多磨是什么意思| 血糖高的人可以吃什么水果| 五月初十是什么星座| 自己开店做什么赚钱| 5月12号是什么日子| 肚脐周围是什么肠| 尿检白细胞弱阳性是什么意思| 低血压食补吃什么最快| 唐僧属什么生肖| 白羊座跟什么星座最配| 傲气是什么意思| 小孩子坐飞机需要什么证件| 查肾功能需要做什么检查| 免疫抑制是什么意思| 眩晕症是什么引起的| 肝浸润是什么意思| 呼吸不顺畅是什么原因| 小孩经常肚子疼是什么原因| 怀孕脉象是什么样子| 性生活后尿路感染是什么原因| 木是什么生肖| 眼睑炎用什么药| 倾巢出动是什么意思| 长裙配什么鞋| 忽必烈和成吉思汗是什么关系| 跳蛋是什么意思| 男生下体痒是什么原因| 情是什么意思| 1977年属蛇是什么命| 喝枸杞有什么好处| 我方了是什么意思| 鼻窦炎吃什么药好得快| 两极分化是什么意思| 依托考昔片是什么药| 四月三日是什么星座| 卷饼里面配什么菜好吃| 感冒去医院挂什么科| 八月十二是什么星座| 备孕去医院挂什么科| 什么叫轻食| 吃什么补脑子增强记忆力最快| cream什么意思| 跌跌撞撞什么意思| g750和au750有什么区别| 胖头鱼是什么鱼| 感叹号像什么| 多吃丝瓜有什么好处和坏处| kinghome是什么牌子| 92年属猴的是什么命| 筛子是什么意思| 葛根长什么样子图片| 补充镁有什么好处| ads是什么意思| 高凝状态是什么意思| 小肚子发胀是什么原因女性| 吃了虾不能吃什么| 什么的绿毯| 肚子痛去药店买什么药| 吃什么才能瘦下来| 霉菌性阴炎是什么原因引起的女| oa是什么意思| 结节是什么原因引起的| 朱元璋是什么生肖| advil是什么药| 14年婚姻是什么婚| 前列腺吃什么食物调理| 淋巴细胞百分比低是什么意思| 肠炎发烧吃什么药| 梦见买面条有什么预兆| 保险公司最怕什么投诉| 吃什么伤口愈合的快| 传字五行属什么| 眉毛稀少是什么原因| 转氨酶高吃什么| 降结肠在什么位置| 晚上吃什么容易入睡| 安全期是什么| 应届毕业生是什么意思| 749局是什么| 吃什么降肌酐| ct和拍片有什么区别| 凯撒沙拉酱是什么口味| 花木兰属什么生肖| 类风湿不能吃什么食物| 头发掉的多是什么原因| 脂肪瘤应该挂什么科| 什么行业最赚钱| 头顶长白头发是什么原因造成的| 肠溶片是什么意思| 肉烧什么好吃| 嗓子疼发烧吃什么药| 和田玉对身体有什么好处| 金陵十二钗是什么意思| 77属什么生肖| 下面痒用什么清洗最好| 八月是什么星座| 用盐刷牙有什么好处和坏处| 悄悄的什么| 脊髓炎吃什么药| bc是什么意思| 7年之痒是什么意思| bid医学上是什么意思| 结肠炎吃什么中成药| 高血压降不下来是什么原因| 千山暮雪结局是什么| 滥竽充数的滥是什么意思| 鬼针草有什么功效| 毕业送什么礼物给老师| 理疗是什么| 贝前列素钠片主治什么病| 炒米是什么米做的| 小产可以吃什么水果| 床上用品四件套都有什么| 罗勒叶在中国叫什么| 失落感是什么意思| 胃一阵一阵的疼是什么原因| 酵母菌属于什么菌| 咳嗽挂什么科| 7月13号是什么星座| 邓紫棋为什么叫gem| 肾不好吃什么好| 7月初二是什么星座| 糖化血红蛋白高是什么意思| 品牌背书是什么意思| 白糖和冰糖有什么区别| 什么什么三什么成语| 什么是天赋| 晚上梦见蛇是什么预兆| 怀孕可以吃什么水果| 嘴唇干是什么原因引起的| 什么叫几何图形| 什么药膏能让疣体脱落| 16岁可以做什么工作| 痔疮是什么原因引起的| 小产可以吃什么水果| 为什么突然对鸡蛋过敏| 平步青云什么意思| ct和b超有什么区别| 卫生院院长是什么级别| 什么口红好| 双侧卵巢多囊性改变是什么意思| 卤水是什么成分| 碳化是什么意思| 9月28是什么星座| 蝎子喜欢吃什么| mw是什么单位| 小腿经常抽筋是什么原因| 什么是修辞手法| 更年期补钙吃什么钙片好| 多普勒超声检查是什么| 肺癌晚期有什么症状| 两岁宝宝不会说话但什么都知道| 阴超可以检查出什么| 脑脊液是什么颜色| 虾肚子上的黑线是什么| 1924年属什么| 吃什么东西能流产| 什么的流| 为什么身份证后面有个x| 美国为什么不敢动朝鲜| 逆商是什么| 血管紧张素是什么意思| 后年是什么年| 杭州菜属于什么菜系| 想怀孕需要检查什么项目| 藏红花泡水喝有什么功效| 五指毛桃是什么| 蹲不下去是什么原因| 不生孩子的叫什么族| 刚怀孕吃什么水果对胎儿好| 黑枸杞泡水后什么颜色| 反流性食管炎b级是什么意思| 男人肾虚吃什么最补| 缺锌吃什么食物和水果| 太阳穴痛什么原因| 什么样的人容易孕酮低| 为什么会得水痘| 一个牙一个合是什么字| 耻骨高是什么原因| 榨精是什么意思| 眼睛模糊是什么原因| 脑门出汗多是什么原因| 女性脉弦是什么意思| 日语一个一个是什么意思| 茯苓有什么功效和作用| 吉加页读什么| 吃什么食物降血压最快最好| 头胀是什么原因导致的| 男人吃六味地黄丸有什么好处| 农历3月3是什么节日| 碳酸饮料喝多了有什么危害| 痹是什么意思| 贾字五行属什么| 三心二意是指什么生肖| 四维彩超和大排畸有什么区别| 血糖低会出现什么症状| 7月6号什么星座| 皮肤病是什么原因造成的| 香港电话前面加什么| 去医院看心理挂什么科| 鸟语花香是什么生肖| 吃什么利尿最快去腹水的| 吃钙片有什么好处| Polo什么意思| 胆囊炎需要注意什么| 秋天有什么花| gcp是什么意思| 百度

春晚综艺电视剧各出奇招 春节荧屏收视攻略指南

百度 (图片来自英国《卫报》网站)

5.不同路径

不同路径
一个机器人位于一个?m x n?网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。

问总共有多少条不同的路径?

示例 1:

输入: m = 3, n = 7
输出: 28

示例 2:

输入: m = 3, n = 2
输出: 3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。

  1. 向右 -> 向下 -> 向下
  2. 向下 -> 向下 -> 向右
  3. 向下 -> 向右 -> 向下

示例 3:

输入: m = 7, n = 3
输出: 28

示例 4:

输入: m = 3, n = 3
输出: 6

提示:

  • 1 <= m, n <= 100
  • 题目数据保证答案小于等于?2 * 10^9

dp[i] [j]表示走到当前位置有多少种方式

初始化
1.虚拟节点里面的值,保证后面填表的结果是正确的
2.下标的映射
保证下面的边界不能出现越界的情况image.png
image.png
初始化为1就行了image.png

class Solution

{

public:

? ? int uniquePaths(int m, int n)

? ? {

? ? ? ? //创建dp吧表

? ? ? ? //初始化

? ? ? ? //填表

? ? ? ? //返回值

  

? ? ? ? vector<vector<int>>dp(m+1,vector<int>(n+1));//m+1行n+1列

? ? ? ? dp[0][1]=1;

? ? ? ? for(int i=1;i<=m;i++)//从上遍历每一行

? ? ? ? {

? ? ? ? ? ? for(int j=1;j<=n;j++)//从左往右填写每一行

? ? ? ? ? ? {

? ? ? ? ? ? ? ? dp[i][j]=dp[i-1][j]+dp[i][j-1];

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return dp[m][n];

? ? }

};

6.不同路径 II

不同路径 II
给定一个?m x n?的整数数组?grid。一个机器人初始位于?左上角(即?grid[0][0])。机器人尝试移动到?右下角(即?grid[m - 1][n - 1])。机器人每次只能向下或者向右移动一步。

网格中的障碍物和空位置分别用?1?和?0?来表示。机器人的移动路径中不能包含?任何?有障碍物的方格。

返回机器人能够到达右下角的不同路径数量。

测试用例保证答案小于等于?2 * 109

示例 1:

输入: obstacleGrid = [[0,0,0],[0,1,0],[0,0,0] ]
输出: 2
解释: 3x3 网格的正中间有一个障碍物。
从左上角到右下角一共有 2 条不同的路径:

  1. 向右 -> 向右 -> 向下 -> 向下
  2. 向下 -> 向下 -> 向右 -> 向右

示例 2:

输入: obstacleGrid = [[0,1],[0,0] ]
输出: 1

提示:

  • m ==?obstacleGrid.length
  • n ==?obstacleGrid[i].length
  • 1 <= m, n <= 100
  • obstacleGrid[i][j]?为?0?或?1

dp[i] [j]表示到达[i] [j]一共有多少种方法
初始化的时候只要我们的这个星星初始化好了就行了
所以我们在对边界的那一行一列进行初始化的时候,将dp[0] [1]初始化为1就行了
image.png
将我们五角星这个格子的左边或者是右边初始化为1就行了,我们从星星位置开始走
image.png

class Solution

{

public:

? ? int uniquePathsWithObstacles(vector<vector<int>>& ob)

? ? {

? ? ? ? //创建dp表

? ? ? ? //初始化

? ? ? ? //填表

? ? ? ? //返回值

? ? ? ? int m=ob.size(),n=ob[0].size();

? ? ? ? vector<vector<int>>dp(m+1,vector<int>(n+1));//m+1行,n+1列

? ? ? ? dp[1][0]=1;

? ? ? ? for(int i=1;i<=m;i++)

? ? ? ? {

? ? ? ? ? ? for(int j=1;j<=n;j++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? if(ob[i-1][j-1]==0)//这个位置是空位置。因为我们扩大了一行一列,所以我们这里的横纵坐标是需要进行减一的操作的

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ?dp[i][j]=dp[i-1][j]+dp[i][j-1];

? ? ? ? ? ? ? ? }

  

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return dp[m][n];

? ? }

};

7.珠宝的最高价值

珠宝的最高价值
现有一个记作二维矩阵?frame?的珠宝架,其中?frame[i][j]?为该位置珠宝的价值。拿取珠宝的规则为:

  • 只能从架子的左上角开始拿珠宝
  • 每次可以移动到右侧或下侧的相邻位置
  • 到达珠宝架子的右下角时,停止拿取

注意:珠宝的价值都是大于 0 的。除非这个架子上没有任何珠宝,比如?frame = [[0]]

示例 1:

输入: frame = [[1,3,1],[1,5,1],[4,2,1] ]
输出:12
解释: 路径 1→3→5→2→1 可以拿到最高价值的珠宝

提示:

  • 0 < frame.length <= 200
  • 0 < frame[0].length <= 200
    就是看哪个路径拿到的礼物价值最多

dp[i] [j]表示,到达[i] [j]位置的时候 ,此时的最大价值
前一个格子的最大值加上我当前格子的值
image.png

初始化的时候我们多一行一列
里面的值是需要保证后面的填表是正确的
并且下标的映射关系要正确

我们需要将开始位置的上边和左边的格子初始化为0,不能影响到开始的位置
image.png
填表的时候如果要找到原始数组中的值,我们一定要进行横纵坐标-1的操作

填表顺序从上往下,从左往右

返回值就是dp[m] [n]

class Solution

{

public:

? ? int jewelleryValue(vector<vector<int>>& g)

? ? {

? ? ? ? //创建dp表

? ? ? ? //初始化

? ? ? ? //填表 ?

? ? ? ? //返回值

  

? ? ? ? int m=g.size(),n=g[0].size();

? ? ? ? vector<vector<int>>dp(m+1,vector<int>(n+1));

  

? ? ? ? //从坐标(1,1)开始

? ? ? ? for(int i=1;i<=m;i++)

? ? ? ? {

? ? ? ? ? ? for(int j=1;j<=n;j++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? dp[i][j]=max(dp[i-1][j],dp[i][j-1])+g[i-1][j-1];//两者位置的最大值加上我们当前位置的值

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return dp[m][n];

? ? }

};

8.下降路径最小和

下降路径最小和
给你一个?n x n?的?方形?整数数组?matrix?,请你找出并返回通过?matrix?的下降路径?的?最小和?。

下降路径?可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置?(row, col)?的下一个元素应当是?(row + 1, col - 1)(row + 1, col)?或者?(row + 1, col + 1)?。

示例 1:

输入: matrix = [[2,1,3],[6,5,4],[7,8,9] ]
输出: 13
解释: 如图所示,为和最小的两条下降路径

示例 2:

输入: matrix = [[-19,57],[-40,-5] ]
输出:-59
解释: 如图所示,为和最小的下降路径

提示:

  • n == matrix.length == matrix[i].length
  • 1 <= n <= 100
  • -100 <= matrix[i][j] <= 100

dp[i] [j]就是到达[i] [j]时的最小下降路径
image.png
image.png
image.png
将第一行初始化为0,不能影响实际表格的第一行,
实际表格的第一行的值就是默认里面的值就行了

然后虚拟表格从第二行开始的第一列和最后一列都初始化为无穷大就行行了

因为我们要从三个路径中选择最小的一个路径,所以我们的虚拟位置是不能影响的这个最小路径的评选的,所以我们在这里初始化为正无穷大

这里我们是加上一行加上了两列虚拟位置

我们返回最后一行的最小值就行了

class Solution

?{

public:

? ? int minFallingPathSum(vector<vector<int>>& ma)

? ? {

? ? ? ? //创建一个dp表

? ? ? ? //初始化

? ? ? ? //确定填表顺序

? ? ? ? //返回结果

  

? ? ? ? int n=ma.size();

? ? ? ? vector<vector<int>>dp(n+1,vector<int>(n+2,INT_MAX));//初始化为最大值

? ? ? ? //初始化第一行

? ? ? ? for(int i=0;i<n+2;i++)dp[0][i]=0;//让第一行所有的i位置变成0就行了

  

? ? ? ? //那么到这里我们就将边界都初始化好了

? ? ? ? for(int i=1;i<=n;i++)

? ? ? ? {

? ? ? ? ? ? for(int j=1;j<=n;j++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? //我们这里的ma[i][j]坐标是需要-1的,需要映射到原始的矩阵里面的坐标的,因为我们加了一行两列

? ? ? ? ? ? ? ? dp[i][j]=min(dp[i-1][j-1],min(dp[i-1][j],dp[i-1][j+1]))+ma[i-1][j-1];//最小值加上当前的值

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? int ret=INT_MAX;

? ? ? ? for(int j=1;j<=n;j++)

? ? ? ? {

? ? ? ? ? ? ret=min(ret,dp[n][j]);//找到最后一行的最小值就行了

? ? ? ? }

? ? ? ? return ret;

? ? }

};

9.最小路径和

最小路径和
给定一个包含非负整数的?_m_?x?_n_?网格?grid?,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

说明: 每次只能向下或者向右移动一步。

示例 1:

输入: grid = [[1,3,1],[1,5,1],[4,2,1] ]
输出: 7
解释: 因为路径 1→3→1→1→1 的总和最小。

示例 2:

输入: grid = [[1,2,3],[4,5,6] ]
输出: 12

dp[i] [j]到达[i] [j]位置时,最小路径和
image.png
只需要修改两个位置的值为0,其他的都修改为正无穷大
image.png

class Solution

{

public:

? ? int minPathSum(vector<vector<int>>& g)

? ? {

? ? ? ? //创建一个dp表

? ? ? ? //初始化

? ? ? ? //确定填表顺序

? ? ? ? //返回结果

? ? ? ? int m=g.size(),n=g[0].size();

? ? ? ? vector<vector<int>>dp(m+1,vector<int>(n+1,INT_MAX));//将所有的值初始化为无穷大

? ? ? ? dp[0][1]=dp[1][0]=0 ;

  

? ? ? ? //到这里我们就将边界的情况初始化完毕了

? ? ? ? for(int i=1;i<=m;i++)

? ? ? ? {

? ? ? ? ? ? for(int j=1;j<=n;j++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? dp[i][j]=min(dp[i-1][j],dp[i][j-1])+g[i-1][j-1];

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return dp[m][n];

  
  
  

? ? }

};

10.地下城游戏

地下城游戏
恶魔们抓住了公主并将她关在了地下城?dungeon?的?右下角?。地下城是由?m x n?个房间组成的二维网格。我们英勇的骑士最初被安置在?左上角?的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。

骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。

有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为_负整数_,则表示骑士将损失健康点数);其他房间要么是空的(房间里的值为?0),要么包含增加骑士健康点数的魔法球(若房间里的值为_正整数_,则表示骑士将增加健康点数)。

为了尽快解救公主,骑士决定每次只?向右?或?向下?移动一步。

返回确保骑士能够拯救到公主所需的最低初始健康点数。

**注意:**任何房间都可能对骑士的健康点数造成威胁,也可能增加骑士的健康点数,包括骑士进入的左上角房间以及公主被监禁的右下角房间。

示例 1:

输入: dungeon = [[-2,-3,3],[-5,-10,1],[10,30,-5] ]
输出: 7
解释: 如果骑士遵循最佳路径:右 -> 右 -> 下 -> 下 ,则骑士的初始健康点数至少为 7 。

示例 2:

输入: dungeon = [[0] ]
输出: 1

dp[i ] [j]表示:从[i] [j]位置出发,到达终点,就是所需的最短健康数image.png
image.png
image.png

class Solution

{

public:

? ? int calculateMinimumHP(vector<vector<int>>& d)

? ? {

? ? ? ? //创建一个dp表

? ? ? ? //初始化

? ? ? ? //确定填表顺序

? ? ? ? //返回结果

? ? ? ? int m=d.size(),n=d[0].size();

? ? ? ? vector<vector<int>>dp(m+1,vector<int>(n+1,INT_MAX));//都初始化为无穷大

? ? ? ? dp[m][n-1]=dp[m-1][n]=1;

? ? ? ? for(int i=m-1;i>=0;i--)

? ? ? ? {

? ? ? ? ? ? for(int j=n-1;j>=0;j--)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? dp[i][j]=min(dp[i+1][j],dp[i][j+1])-d[i][j];//先期初这个点的下面和右边哪个最大

? ? ? ? ? ? ? ? dp[i][j]=max(1,dp[i][j]);//对负数进行处理操作

? ? ? ? ? ? ? ? //保证了角色的生命值至少为 1。

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return dp[0][0];

? ? }

};

//就是从后面开始到前面

从后向前开始进行遍历操作

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Undoom

感谢啦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
矽肺病是什么症状 空囊是什么意思 深度睡眠是什么意思 什么鱼最好养 气虚吃什么
怕冷的女人是什么原因 一月8日是什么星座 财神爷叫什么名字 吃什么增强抵抗力 男性小便出血是什么原因
异曲同工是什么意思 机车什么意思 血液粘稠会有什么症状 肾功能不全吃什么药 卵巢早衰吃什么药调理最好
放炮是什么意思 孕妇贫血吃什么补血最快 房颤用什么药 半夜醒来口干舌燥是什么原因 啊囊死给什么意思
2022年属什么生肖hcv9jop4ns1r.cn 护理是什么意思hcv8jop1ns7r.cn 虹字五行属什么hcv8jop5ns6r.cn 镀18k金是什么意思hcv7jop9ns6r.cn 右边肋骨下面是什么器官hcv7jop9ns0r.cn
上次闰六月是什么时候hcv7jop7ns2r.cn 口是心非是什么意思bfb118.com 腔隙脑梗吃什么药最好hcv8jop4ns3r.cn 益母草能治什么病hcv8jop5ns8r.cn 阴虚吃什么水果ff14chat.com
有什么好吃的菜hcv8jop8ns8r.cn 975是什么意思hcv9jop5ns0r.cn 东方是什么意思hcv9jop1ns3r.cn 蛇的天敌是什么动物hcv7jop6ns2r.cn 六味地黄丸什么时候吃最好hcv8jop7ns0r.cn
医保卡什么样子hcv8jop3ns4r.cn 脂肪粒是什么原因引起的hcv8jop1ns7r.cn 弯的直的什么意思hcv9jop5ns0r.cn cancer是什么意思hcv9jop2ns8r.cn 有且仅有什么意思hlguo.com
百度