路径问题【动态规划】

news/2024/12/22 0:49:05/

一、不同路径

 

class Solution {
public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m+1,vector<int>(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];}
};

二、不同路径II 

 

class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& ob) {int m = ob.size();int n = ob[0].size();vector<vector<int>> dp(m+1,vector<int>(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];}
};

 三、礼物的最大价值

class Solution {
public:int maxValue(vector<vector<int>>& grid) {int m = grid.size();int n = grid[0].size();vector<vector<int>> dp(m+1,vector<int>(n+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])+grid[i-1][j-1];}}return dp[m][n];}
};

 四、下降路径最小和

 

 

 

class Solution {
public:int minFallingPathSum(vector<vector<int>>& matrix) {int n = matrix.size();vector<vector<int>> dp(n+1,vector<int> (n+2,INT_MAX));for(int j = 0;j < n+2;j++){dp[0][j] = 0;}for(int i = 1;i <= n;i++){for(int j = 1;j <= n;j++){dp[i][j] = min(dp[i-1][j-1],min(dp[i-1][j],dp[i-1][j+1]))+matrix[i-1][j-1];}}int ret = INT_MAX;for(int i = 1;i <= n;i++)ret = min(ret,dp[n][i]);return ret;}
};

 五、最小路径和

 

此题跟前面差不多,略。

六、地下城游戏 【以[i,j]位置为起点】

        

 

 

class Solution {
public:int calculateMinimumHP(vector<vector<int>>& dungeon) {int m = dungeon.size(),n = dungeon[0].size();vector<vector<int>> dp(m+1,vector(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]) - dungeon[i][j];dp[i][j] = max(1,dp[i][j]);}}return dp[0][0];}
};

 


http://www.ppmy.cn/news/1136652.html

相关文章

(ubuntu)Docker 安装linux 详情过程

文章目录 前言Docker 安装linux第一步&#xff1a;使用dokcker 拉取镜像&#xff1a;第二步&#xff1a;创建本地目录&#xff08;用于挂载&#xff09;第三步&#xff1a;&#xff08;上传配置文件&#xff09;修改配置文件第四步&#xff1a;创建docker容器第五步: 测试本地连…

文举论金:黄金原油全面走势分析策略独家指导

市场没有绝对&#xff0c;涨跌没有定势&#xff0c;所以&#xff0c;对市场行情的涨跌平衡判断就是你的制胜法宝。欲望&#xff01;有句意大利谚语&#xff1a;让金钱成为我们忠心耿耿的仆人&#xff0c;否则&#xff0c;它就会成为一个专横跋扈的主人。空头&#xff0c;多头都…

【Typescript】面向对象(上篇),包含类,构造函数,继承,super,抽象类

假期第七篇&#xff0c;对于基础的知识点&#xff0c;我感觉自己还是很薄弱的。 趁着假期&#xff0c;再去复习一遍 面向对象&#xff1a;程序中所有的操作都需要通过对象来完成 计算机程序的本质就是对现实事物的抽象&#xff0c;抽象的反义词是具体。比如照片是对一个具体的…

LCR 101.分割等和子集

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;LCR 101. 分割等和子集 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 将数组分为等和的两部分等价于数组是否中存在部分元素和为数组总和的一半。 首先&#xff0c;若数组长度为 1 或数组…

大模型部署手记(2)baichuan2+Windows GPU

1.简介 组织机构&#xff1a;百川智能&#xff08;前搜狗CEO王小川创立&#xff09; 代码仓&#xff1a;GitHub - baichuan-inc/Baichuan2: A series of large language models developed by Baichuan Intelligent Technology 模型&#xff1a;baichuan-inc/Baichuan2-7B-Ch…

【C语言】八大排序算法

文章目录 一、冒泡排序1、定义2、思想及图解3、代码 二、快速排序1、hoare版本2、挖坑法3、前后指针法4、非递归快排5、快速排序优化1&#xff09;三数取中选key值2&#xff09;小区间优化 三、直接插入排序1、定义2、代码 四、希尔排序1、定义2、图解3、代码 五、选择排序1、排…

QT4.8.7安装详细教程

QT4.8.7安装详细教程&#xff08;MinGW 4.8.2和QTCreator4.2.0&#xff09; 1.下载及安装2.配置环境 此文是在下方链接博文的基础上&#xff0c;按自己的理解整理的https://blog.csdn.net/xiaowanzi199009/article/details/104119265 1.下载及安装 这三个文件&#xff0c;顺序是…

深入解析CSS选择器:更多细节和应用

深入解析CSS选择器&#xff1a;更多细节和应用 CSS选择器不仅是前端开发的基础&#xff0c;更是成为一个高效开发者不可或缺的工具。选择器的高级用法能让你用更少的代码做更多的事情&#xff0c;而深入理解它们的工作原理也能让你更准确地控制样式。本文将进一步深入地探讨CS…