当前位置: 首页 > news >正文

动态规划 —— 路径问题-不同路径

1. 不同路径

题目链接:

62. 不同路径 - 力扣(LeetCode)icon-default.png?t=O83Ahttps://leetcode.cn/problems/unique-paths/description/

 

 


2.  算法原理 

1. 状态表示:以莫一个位置为结尾

    

dp[i]表示:以[i,j]位置为结尾时,解码方法的总数

   

dp[i,j]表示:走到[i,j]位置的时候一共有多少种方法

 

2. 状态转移方程

  

根据最近的一步来划分问题:

     

到达dp[i][j]有两种情况:

                                        1. 从上面过来:dp[i-1,j] -> dp[i,j],dp[i-1,j]

                                        2. 从左边过来:dp[i,j-1] -> dp[i,j],dp[i,j-1]

   

之所以这里是dp[i-1,j]而不是dp[i-1,j]+1是因为这里的+1是dp[i-1,j]到dp[i,j]的一步,而不是一种方法

   

  

本题的状态转移方程是:dp[i][j] = dp[i-1,j] + dp[i,j-1]

3. 初始化 :把dp表填满不越界,让后面的填表可以顺利进行

    

根据状态转移方程来初始化的话是需要dp[i-1,j] 和 dp[i,j-1]来确定要初始化位置值,但是我们整个矩阵的上面的一行和左边的一列是不符合这个情况的,所以我们可以在上面的一行和左边的一列再额外的加上一行和一列的虚拟节点

   

那个虚拟位置为1是因为上面的值加上左边的值就可以得到原来第一个位置的值,再按照上面的值加上左边的值来计算其他位置的值

4. 填表顺序 

    

本题的填表顺序是:从上往下填写每一行,每一行的值是从左往右

5. 返回值 :题目要求 + 状态表示 

    

本题的返回值是:dp[m][n]


3.代码

动态规划的固定四步骤:1.  创建一个dp表

                                        2. 在填表之前初始化

                                        3. 填表(填表方法:状态转移方程)

                                        4. 确定返回值 

class Solution {
public:int uniquePaths(int m, int n) {//创建dp表二维数组vector<vector<int>>dp(m+1,vector<int>(n+1));//只用初始化[0][1]为1,其他会默认初始化为0dp[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];}
};


完结撒花~


http://www.mrgr.cn/news/60781.html

相关文章:

  • 【STM32-HAL库】TEMT6000光照强度传感器(STM32F407ZGT6)(附带工程下载链接)
  • Web API 哪家强?Axios、Fetch 和 HttpClient 优选指南
  • Flutter升级与降级
  • OpenGMS是什么?如何使用OpenGMS的建模与模拟工具(一)
  • 可解释机器学习系列:第二章 可解释性的重要性与分类
  • 【iOS】知乎日报第一周总结
  • shiro(会话管理Session Management,加密Cryptography)
  • 大语言模型驱动的跨域属性级情感分析——论文阅读笔记
  • Zone Transfer详解
  • UG/NX 安装
  • 【设计模式系列】适配器模式(九)
  • HarmonyOS项目开发一多简介
  • 十五、智能指针
  • 线程的理解及基本操作
  • 一些待机电流波形特征
  • C#与C++互操作时的数据类型对应
  • 00 嵌入式知识-目录篇
  • 以通俗易懂的仓库来讲解JVM内存模型
  • C++ 中的可调用对象
  • 一文学会Matrix类的用法
  • 循环神经网络(Recurrent Neural Network,RNN)
  • 4个硬盘数据修复攻略:让你的数据失而复得。
  • 同一个Service内部调用开启事务
  • Python多语双峰分布
  • 练习LabVIEW第二十四题
  • Unity Job System详解(3)——NativeArray源码分析