DP:路径规划模型

      

 创作不易,感谢三连支持!

    路径规划主要是让目标对象在规定范围内的区域内找到一条从起点到终点的无碰撞安全路径。大多需要用二维dp数组去实现

一、不同路径

. - 力扣(LeetCode)不同路径

class Solution {
public:
    int uniquePaths(int m, int n) 
    {
       vector<vector<int>>  dp(m+1,vector<int>(n+1));//创建一个有辅助节点的数组
       //初始化dp[0][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];
    }
};

二、不同路径2

. - 力扣(LeetCode)不同路径2

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) 
    {
        int m=obstacleGrid.size(),n=obstacleGrid[0].size();
        vector<vector<int>>  dp(m+1,vector<int>(n+1));//创建一个dp数组
        //初始化dp[0][1]
        dp[0][1]=1;
        //开始填表
        for(int i=1;i<=m;++i)   
        for(int j=1;j<=n;++j)  
            if(obstacleGrid[i-1][j-1]==0)//判断自己当前的格子是不是障碍物
            dp[i][j]=dp[i-1][j]+dp[i][j-1];
       return dp[m][n];
    }
};

三、珠宝的最高价值

. - 力扣(LeetCode)珠宝的最高价值

class Solution {
public:
    int jewelleryValue(vector<vector<int>>& frame) 
    {
        int m=frame.size(),n=frame[0].size();
        vector<vector<int>>  dp(m+1,vector<int>(n+1));//创建一个dp数组
        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])+frame[i-1][j-1];
                return dp[m][n];
    }
};

 四、最小路径和

. - 力扣(LeetCode)最小路径和

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

五、下降路径最小和

. - 力扣(LeetCode)下降路径最小和

class Solution {
public:
    int minFallingPathSum(vector<vector<int>>& matrix) 
    {
       int m=matrix.size(),n=matrix[0].size();
       vector<vector<int>> dp(m+1,vector<int>(n+2,INT_MAX));//加一行,多加两列,两列得是INT MAX
       for(int j=0;j<n+2;++j) dp[0][j]=0;//第一行初始化成0
       for(int i=1;i<=m;++i)
         for(int j=1;j<=n;++j)
            dp[i][j]=min(min(dp[i-1][j-1],dp[i-1][j]),dp[i-1][j+1])+matrix[i-1][j-1];
       //找需要返回的值
       int ret=INT_MAX;
       for(int j=1;j<=n;++j) ret=min(ret,dp[m][j]);
       return ret;
    }
};

六、地下城游戏

. - 力扣(LeetCode)地下城游戏

class Solution {
public:
    int calculateMinimumHP(vector<vector<int>>& dungeon) 
    {
      int m=dungeon.size(),n=dungeon[0].size();
      vector<vector<int>> dp(m+1,vector<int>(n+1,INT_MAX));
      dp[m-1][n]=1;
      for(int i=m-1;i>=0;--i)
       for(int j=n-1;j>=0;--j)
        {
          int mini=min(dp[i+1][j],dp[i][j+1]);
          dp[i][j]=max(mini-dungeon[i][j],1);//要防止出现大血包
        }
        return dp[0][0];
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/483333.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

10一维数组

一维数组是什么&#xff1f; // 相同的数据类型的元素组成的有序集合 // 创建一个一维数组 // 例如&#xff1a; int a[5]{1,2,3,4,5}; //说明&#xff1a; // int:表示数据类型 // a:表示数组名 // [5]&#xff1a;数组的长度 // {1,2,3,4,5} &#xff1a;数组的元素 // 一…

Photoshop 工具使用详解(全集 · 2024版)

全面介绍 Photoshop 工具箱里的工具&#xff0c;点击下列表格中工具名称或图示&#xff0c;即可查阅工具的使用详解。 移动工具Move Tool移动选区、图层和参考线。画板工具Artboard Tool创建、移动多个画布或调整其大小。moVe快捷键&#xff1a;V 矩形选框工具 Rectangular Mar…

视频素材库有哪些网站?6大高质量素材网告诉您

真正的创作始于灵感的火花&#xff0c;而优秀的素材则是让这火花燎原的燃料。在视频创作的广阔天地里&#xff0c;每一帧画面、每一个音符、每一段动画都承载着讲述故事的力量。以下精选的素材网站&#xff0c;无论是为了增添你视频的视觉震撼力&#xff0c;还是为了丰富故事的…

sql注入五-WEB攻防-注入工具SQLMAPTamper编写指纹修改高权限操作目录架构

演示案例&#xff1a; 数据猜解-库表列数据&字典权限操作-文件&命令&交互式提交方法-POST&HEAD&JSON绕过模块-Tamper脚本-使用&开发分析拓展-代理&调试&指纹&风险&等级 #参考&#xff1a; https://www.cnblogs.com/bmjoker/p/9326258.…

状态机高阶讲解-10

1896 01:19:16,700 --> 01:19:19,550 那接下来我们就开始来建模了 1897 01:19:20,690 --> 01:19:22,163 那建模的开始呢 1898 01:19:22,163 --> 01:19:24,900 我们就首先要添加一个类了 1899 01:19:26,330 --> 01:19:27,868 那我们这个很简单 1900 01:19:27,86…

主干网络篇 | YOLOv8更换主干网络之GhostNet

前言:Hello大家好,我是小哥谈。GhostNet是2019年由华为诺亚方舟实验室发布的轻量级网络,速度和MobileNetV3相似,但是识别的准确率比MobileNetV3高,在ImageNet ILSVRC2012分类数据集的达到了75.7%的top-1精度。该论文提除了Ghost模块,通过廉价操作生成更多的特征图。基于一…

【go从入门到精通】for循环控制

作者简介&#xff1a; 高科&#xff0c;先后在 IBM PlatformComputing从事网格计算&#xff0c;淘米网&#xff0c;网易从事游戏服务器开发&#xff0c;拥有丰富的C&#xff0c;go等语言开发经验&#xff0c;mysql&#xff0c;mongo&#xff0c;redis等数据库&#xff0c;设计模…

结构体与共用体

1概述 迄今为止&#xff0c;已介绍了基本类型(或称简单类型)的变量(如整型、实型、字符型变量等)。也介绍了一种构造类型数据一-数组&#xff0c;数组中的各元素是属于同一个类型的。 但是只有这些数据类型是不够的。有时需要将不同类型的数据组合成一个有机的整体,以便于引用…

20231911 2022-2023-2 《网络攻防实践》实验三

1.实验内容 1、实践tcpdump 使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探&#xff0c;回答问题&#xff1a;你在访问www.tianya.cn网站首页时&#xff0c;浏览器将访问多少个Web服务器&#xff1f;他们的IP地址都是什么&#xff1f; 2、实践Wireshark 使…

使用Intellij idea编写Spark应用程序(Scala+SBT)

使用Intellij idea编写Spark应用程序(ScalaSBT) 对Scala代码进行打包编译时&#xff0c;可以采用Maven&#xff0c;也可以采用SBT&#xff0c;相对而言&#xff0c;业界更多使用SBT。 运行环境 Ubuntu 16.04 Spark 2.1.0 Intellij Idea (Version 2017.1) 安装Scala插件 安…

代码随想录训练营第54天 | LeetCode 392.判断子序列、​​​​​​LeetCode 115.不同的子序列

目录 LeetCode 392.判断子序列 文章讲解&#xff1a;代码随想录(programmercarl.com) 视频讲解&#xff1a;动态规划&#xff0c;用相似思路解决复杂问题 | LeetCode&#xff1a;392.判断子序列_哔哩哔哩_bilibili 思路 ​​​​​​LeetCode 115.不同的子序列 文章讲解&…

MySQL 中 聚集索引、非聚集索引、覆盖索引、索引下推 到底是什么

一、什么是 聚集索引、非聚集索引 在MySQL数据库中&#xff0c;索引是提高查询效率的关键。而聚集索引、非聚集索引、覆盖索引、索引下推其实是索引优化的重要策略之一。那这些名词的含义到底是什么呢&#xff1f; 在开始分析前&#xff0c;先来了解下 B 树的索引结构 和 回表…

腾讯云服务器如何购买?图文全流程,2024最新整理

腾讯云服务器购买流程很简单&#xff0c;有两种购买方式&#xff0c;直接在官方活动上购买比较划算&#xff0c;在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵&#xff0c;但是自定义购买云服务器CPU内存带宽配置选择范围广&#xff0c;活动上购买只能选择固定的活动…

【技术类-05】python实现docx段落文字加粗(Win32)

背景需求&#xff1a; 【技术类-04】python实现docx表格文字和段落文字的“手动换行符&#xff08;软回车&#xff09;”变成“段落标记&#xff08;硬回车&#xff09;”-CSDN博客文章浏览阅读1k次&#xff0c;点赞10次&#xff0c;收藏10次。【技术类-04】python实现docx表格…

MySQL表内容的增删查改

在前面几章的内容中我们学习了数据库的增删查改&#xff0c;表的增删查改&#xff0c;这一篇我们来学习一下对表中的内容做增删查改。 CRUD : Create(创建), Retrieve(读取)&#xff0c;Update(更新)&#xff0c;Delete&#xff08;删除&#xff09; 1.创建Create 我们先创建…

Zabbix Web界面中文汉化

要想达到上图的效果&#xff0c;第一步先查看 /usr/share/zabbix/assets/fonts/ [rootservice yum.repos.d]# ll /usr/share/zabbix/assets/fonts/ 总用量 0 lrwxrwxrwx. 1 root root 33 3月 23 16:58 graphfont.ttf -> /etc/alternatives/zabbix-web-font 继续查看graph…

前端调用接口地址跨越问题,nginx配置处理

在nginx配置里面添加add_header如下&#xff1a; add_header Access-Control-Allow-Origin *; #add_header Access-Control-Allow-Origin http://localhost:8080 always; add_header Access-Control-Allow-Methods GET, POST, PUT, D…

C++命名空间和内联函数

目录 命名空间 内联函数 概述 特性&#xff1a; 命名空间 在C/C中&#xff0c;变量&#xff0c;函数和和类这些名称都存在于全局作用域中&#xff0c;可能会导致很多冲突&#xff0c;使用命名空间的目的是对标识符的名称进行本地化&#xff0c;避免命名冲突或名字污染&…

对话Midjourney创始人:图片仅是起步,人工智能将全面改变学习、创意和组织。

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 ​ 发布在https://it.weoknow.com 关注我 Midjourney 是一家神奇的公司&#xff0c;11 人改变世界&#xff0c;创造伟大的产品。…

Pycharm小妙招之Anaconda离线配环境

Pycharm小妙招之Anaconda离线配环境———如何给无法联网的电脑配python环境&#xff1f; 1. 预备工作2. 电脑1导出包2.1 环境路径2.2 压缩py38导出至U盘 3. 电脑2导入包4. 验证是否导入成功4.1 conda查看是否导入4.2 pycharm查看能否使用 1. 预备工作 WINDOWS系统电脑1(在线)…