力扣64. 最小路径和

动态规划

  • 思路:
    • 假设 dp[i][j] 为 第 i 行、第 j 列的最小路径和;
    • 因为只能向右或者向下移动,所以状态转移方程:
      • dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + v[i][j]
      • 当 i = 0 时,即第一行,只能向右移动,即:dp[0][j] = dp[0][j - 1] + v[0][j];(可以认为是 i - 1 不能越界)
      • 当 j = 0 时,即第一列,只能向下移动,即:dp[i][0] = dp[i - 1][0] + v[i][0];(可以任务是 j - 1 不能越界)
    • 边界条件 dp[0][0] = v[0][0];
class Solution {
public:int minPathSum(vector<vector<int>>& grid) {int row = grid.size();if (row == 0) {return 0;}int column = grid[0].size();if (column == 0) {return 0;}std::vector<std::vector<int>> dp(row, std::vector<int>(column));dp[0][0] = grid[0][0];for (int i = 0; i < row; ++i) {for (int j = 0; j < column; ++j) {if (i == 0 && j == 0) {dp[0][0] = grid[0][0];} else if (i == 0) {dp[0][j] = dp[0][j - 1] + grid[0][j];} else if (j == 0) {dp[i][0] = dp[i -1][0] + grid[i][0];} else {dp[i][j] = std::min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];}}}return dp[row - 1][column - 1];}
};
  • 可调整一下逻辑,先计算第一行的 dp 值,然后计算第一列的 dp 值:
class Solution {
public:int minPathSum(vector<vector<int>>& grid) {int row = grid.size();if (row == 0) {return 0;}int column = grid[0].size();if (column == 0) {return 0;}std::vector<std::vector<int>> dp(row, std::vector<int>(column));dp[0][0] = grid[0][0];for (int i = 1; i < row; ++i) {dp[i][0] = dp[i - 1][0] + grid[i][0];}for (int j = 1; j < column; ++j) {dp[0][j] = dp[0][j - 1] + grid[0][j];}for (int i = 1; i < row; ++i) {for (int j = 1; j < column; ++j) {dp[i][j] = std::min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];}}return dp[row - 1][column - 1];}
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MODBUS】Modbus是什么?

Modbus协议&#xff0c;从字面理解它包括Mod和Bus两部分&#xff0c;首先它是一种bus&#xff0c;即总线协议&#xff0c;和12C、SP|类似&#xff0c;总线就意味着有主机&#xff0c;有从机&#xff0c;这些设备在同一条总线上。 Modbus支持单主机&#xff0c;多个从机&#xf…

Python (八)网络编程

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一份大厂面试资料《史上最全大厂面试题》&#xff0c;Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

​sys --- 系统相关的形参和函数​

该模块提供了一些变量和函数。这些变量可能被解释器使用&#xff0c;也可能由解释器提供。这些函数会影响解释器。本模块总是可用的。 sys.abiflags 在POSIX系统上&#xff0c;以标准的 configure 脚本构建的 Python 中&#xff0c;这个变量会包含 PEP 3149 中定义的ABI标签。…

最新CRMEB商城源码开源版v5.2.2版本+前端uniapp

CRMEB开源商城系统是一款全开源可商用的系统&#xff0c;前后端分离开发&#xff0c;全部100%开源&#xff0c;在小程序、公众号、H5、APP、PC端都能用&#xff0c;使用方便&#xff0c;二开方便&#xff01;安装使用也很简单&#xff01;使用文档、接口文档、数据字典、二开文…

java中 map和 json 字符串 互转

依赖包&#xff1a; <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId> </dependency>包&#xff1a; import com.fasterxml.jackson.core.JsonProcessingException; import com.fa…

鸿蒙(HarmonyOS)应用开发——保存应用数据(题目答案)

判断题 1.首选项是关系型数据库 错误(False) 2.应用中涉及到Student信息&#xff0c;如包含姓名&#xff0c;性别&#xff0c;年龄&#xff0c;身高等信息可以用首选项来存储。 错误(False) 3.同一应用或进程中每个文件仅存在一个Preferences实例。 正确(True) 单选题 …

边缘检测@获取labelme标注的json黑白图掩码mask

import cv2 as cv import numpy as np import json import os from PIL import Imagedef convertPolygonToMask(jsonfilePath):

探秘闭包:隐藏在函数背后的小秘密(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

LeetCode1143.最长公共子序列

这道题看完就大概知道要用动态规划&#xff0c;然后想想如何建立动态转移方程&#xff0c;就很简单了&#xff0c;我都感觉我不是想出来的&#xff0c;是根据直觉应该是这样的然后边想边写就出来&#xff0c;以下是我的代码&#xff1a; class Solution {public int longestCom…

【Java】线程池的创建

目录 ​编辑 一、什么是线程池 二、创建和使用 导入必要的包&#xff1a; 创建线程池&#xff1a; 提交任务给线程池执行&#xff1a; 自定义Runnable和Callable任务&#xff1a; 关闭线程池&#xff1a; 我的其他博客 一、什么是线程池 在Java中&#xff0c;线程池是…

使用qrcode实现微信二维码转网址链接

很多情况下&#xff0c;后端会返回一个微信二维码的地址&#xff1a; 但是我们并无法直接打开或者是展示该二维码&#xff0c;毕竟浏览器不认识weixin://xxx &#xff0c;只认识http://xxx 如果想要实现weixin://xxx 转化为http:// 的形式&#xff0c;可以使用第三方库&#x…

java.lang.ClassNotFoundException:javax.xml.bind.DatatypeConverter 报错解决

问题原因: 这有可能是因为SpringBoot项目结合jwt进行用户登录时出现的问题&#xff0c;因为jdk版本太高导致的 解决办法: 方法一: 降低jdk版本 检查JDK版本,如果你是JDK17版本,就降到JDK8版本 方案二:在meven中添加依赖 注意: 如果2.3.1的版本不生效,则使用2.3.0的版本 <…

C/C++ extern关键字

文章目录 extern 是一个关键字&#xff0c;用于在C和C中进行外部声明&#xff0c;它告诉编译器某个变量或函数是在其他地方定义的&#xff0c;而不是在当前文件中定义。具体作用如下&#xff1a; 外部变量声明&#xff1a; 在一个文件中使用 extern 来声明一个在另一个文件中定…

安卓ViewPager最简单使用(另一种实现)

继续前文提醒&#xff1a;ViewPager已经被ViewPager2所取代。 正文&#xff1a; 写完前面一篇文章&#xff0c;又在网上到处翻找&#xff0c;发现其实并不需要真的去继承一个PagerAdapter类也行。 这样我们的问题就简单了&#xff0c;只需要两步&#xff1a; 一、设置布局&…

jmeter如何循环运行到csv文件最后一行后停止

1、首先在线程组中设置’循环次数‘–勾选永远 2、csv数据文件设置中设置&#xff1a; 遇到文件结束符再次循环?——改为&#xff1a;False 遇到文件结束符停止线程?——改为&#xff1a;True 3、再次运行就会根据文档的行数运行数据 &#xff08;如果需要在循环控制器中&…

回答一个同学的问题:在目前深度学习爆火的年代,专家系统还有用吗,会被淘汰吗?

文章目录 我的看法如下&#xff1a;&#xff08;不会被淘汰&#xff0c;会逐渐进化&#xff09;总结 我的看法如下&#xff1a;&#xff08;不会被淘汰&#xff0c;会逐渐进化&#xff09; 专家系统和深度学习有其各自的优势。专家系统利用规则和知识库来给出结论,适用于问题范…

深度解析:探索「两数之和」问题的多种算法解决方案

今天要讨论的是「两数之和」问题&#xff0c;并将从哈希表解法到排序数组与双指针法、再到一遍哈希表解法的不同解决方案进行详细探讨 哈希表解法&#xff1a; 第一&#xff0c;使用了一种简单而有效的方法——哈希表。我们创建了一个 HashMap&#xff0c;用于存储已遍历过的元…

Android : SensorManager 传感器入门 简单应用

功能介绍&#xff1a;转动手机 图片跟着旋转 界面&#xff1a; activity_main.xml <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/andr…

C4D云渲染怎么提升速度小技巧?C4D云渲染速度提升技巧

当许多C4D用户转向云渲染时&#xff0c;他们常常会发现渲染速度并没有预期中的提升&#xff0c;这让人产生疑问&#xff0c;为什么使用云渲染服务后&#xff0c;渲染时间依然没有显著缩短&#xff0c;C4D云渲染情况取决于多个因素&#xff0c;如&#xff1a;渲染任务特点以及所…

MYSQL练题笔记-子查询-换座位

一、题目相关内容 1&#xff09;相关的表和题目 2&#xff09;帮助理解题目的示例&#xff0c;提供返回结果的格式 二、自己初步的理解 没啥思路&#xff0c;我还没做过交换的这种题&#xff0c;所以我觉得这类交换的题以后值得做一个合集&#xff0c;是有点灵活度在里面的&a…