前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >动态规划之最短路程问题

动态规划之最短路程问题

作者头像
用户11173787
发布2024-06-24 11:13:37
960
发布2024-06-24 11:13:37
举报
文章被收录于专栏:破晓破晓

hello大家好,淘气的我又来了,今天我给大家带来了和动态规划相关的问题,带好笔和纸,咱们开始了

一.题目描述

我们举一个简单的例子,看下边这个图

要想从1到9,我们有如下几种符合要求的选择

1.1->2->3->6->9;

2.1->2->5->6->9;

3.1->4->5->6->9;

4.1->2->5->8->9;

5.1->4->5->8->9;

6.1->4->7->8->9;

二.讲解算法原理

1.状态表示

dp[i][j]表示从出发点到[i][j]位置一共有多少中走法;

2.状态转移方程

如上图所示,我们不难发现,如果想要到达第9个格,那么首先我们必须到第8个格或者第6个格

所以

所以我们得出结论;dp[i][j]=dp[i-1][j]+dp[i][j-1];

3.初始化问题

初始化问题是这类动态规划问题必须解决的一个问题

当dp[i][j]表示如下位置时,会出现越界行为,所以,我们可以这样

由原先的m*n的数组加上一行一列,变为(m+1)*(n+1)的数组

我们知道,会出现越界的位置,都是只有一种路径

所以我们可以把新加的几个位置初始化为如下

如此,根据我们的状态转移方程,可以得出可能越界的位置的路径正好为1;

4.填充顺序

我们仍然采取由上到下,从左到右的顺序

5.返回值

返回dp[m][n]的值;

三.代码实现

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.题目描述
  • 二.讲解算法原理
    • 1.状态表示
      • 2.状态转移方程
        • 3.初始化问题
          • 4.填充顺序
            • 5.返回值
            • 三.代码实现
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档