动态规划

您所在的位置:网站首页 路径最优化问题 动态规划

动态规划

2023-09-19 01:57| 来源: 网络整理| 查看: 265

路径问题1(无障碍)

1、题目:力扣原题

2、问题分析:

根据题目分析,我们可以发现在网格中的任意位置(i,j)只能由其上一个状态(i,j-1)向右或者(i-1,j)向下移动得到。换句话说,当前状态存在的数目可以由上一个状态推导而来,所以可以动态规划来计算。

采用动态规划五部曲的前四部,我们可以如下分析:

1)确定dp数组及含义

        dp[i][j]表示从左上角起点到位置(i,j)可以走通的路径数目 ;

2)确定递推公式

        因为机器人只可以向右或者向左移动,所以假设某一个位置(i,j)可以由上一个状态(i,j-1)向右或者(i-1,j)向下移动得到:dp[i][j] = dp[i][j-1] + dp[i-1][j]

3)初始化

        dp[i][0] = 1,因为从(0,0)到(i,0)的路径只有一条;

        dp[0][j]=1,因为从(0,0)到(0,j)的路径也只有一条;

4)确定遍历顺序

        根据递推公式,我们可以发现当前位置的结果是从其上方和左方递推得来的,所以遍历顺序可以从左到右层层遍历,从而保证当递推到dp[i][j]时,dp[i][j-1] 和 dp[i-1][j]已经有结果了。

3、代码分析:

class Solution { public int uniquePaths(int m, int n) { int[][] dp = new int[m][n]; //初始化 for(int i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3