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

学生个人网站模板灵芝产品网站建设方案

学生个人网站模板,灵芝产品网站建设方案,推广平台怎么做,网站建设与管理教学计划算法训练营 day43 动态规划 不同路径 不同路径 II 不同路径 62. 不同路径 - 力扣(LeetCode) 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达…

算法训练营 day43 动态规划 不同路径 不同路径 II

不同路径

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

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。

问总共有多少条不同的路径

按照动规五部曲来分析:

  1. 确定dp数组(dp table)以及下标的含义

dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。

  1. 确定递推公式

想要求dp[i][j],只能有两个方向来推导出来,即dp[i - 1][j]dp[i][j - 1]

此时在回顾一下 dp[i - 1][j] 表示啥,是从(0, 0)的位置到(i - 1, j)有几条路径,dp[i][j - 1]同理。

那么很自然,dp[i][j] = dp[i - 1][j] + dp[i][j - 1],因为dp[i][j]只有这两个方向过来。

  1. dp数组的初始化

如何初始化呢,首先dp[i][0]一定都是1,因为从(0, 0)的位置到(i, 0)的路径只有一条,那么dp[0][j]也同理。

  1. 确定遍历顺序

这里要看一下递推公式dp[i][j] = dp[i - 1][j] + dp[i][j - 1]dp[i][j]都是从其上方和左方推导而来,那么从左到右一层一层遍历就可以了。

这样就可以保证推导dp[i][j]的时候,dp[i - 1][j] dp[i][j - 1]一定是有数值的。

  1. 举例推导dp数组
class Solution {public int uniquePaths(int m, int n) {int[][] dp = new int[m][n];for (int i = 0; i < m; i++) dp[i][0] = 1;for (int j = 0; j < n; j++) dp[0][j] = 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 - 1][n - 1];}
}

不同路径 II

63. 不同路径 II - 力扣(LeetCode)

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。

现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?

网格中的障碍物和空位置分别用 1 和 0 来表示。

62.不同路径 中我们已经详细分析了没有障碍的情况,有障碍的话,其实就是标记对应的dp table(dp数组)保持初始值(0)就可以了。

  1. 确定dp数组(dp table)以及下标的含义

dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。

  1. 确定递推公式

递推公式和62.不同路径一样,dp[i][j] = dp[i - 1][j] + dp[i][j - 1]

但这里需要注意一点,因为有了障碍,(i, j)如果就是障碍的话应该就保持初始状态(初始状态为0)。

  1. dp数组如何初始化

因为从(0, 0)的位置到(i, 0)的路径只有一条,所以dp[i][0]一定为1,dp[0][j]也同理。

但如果(i, 0) 这条边有了障碍之后,障碍之后(包括障碍)都是走不到的位置了,所以障碍之后的dp[i][0]应该还是初始值0。

  1. 确定遍历顺序

从递归公式dp[i][j] = dp[i - 1][j] + dp[i][j - 1] 中可以看出,一定是从左到右一层一层遍历,这样保证推导dp[i][j]的时候,dp[i - 1][j] dp[i][j - 1]一定是有数值。

  1. 举例推导dp数组
class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m = obstacleGrid.length;int n = obstacleGrid[0].length;int[][] dp = new int[m][n];for (int i = 0; i < m&&obstacleGrid[i][0]==0; i++) dp[i][0] = 1;for (int j = 0; j < n&&obstacleGrid[0][j]==0; j++) dp[0][j] = 1;for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {if (obstacleGrid[i][j]==1) continue;dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}return dp[m - 1][n - 1];}
}
http://www.yayakq.cn/news/263551/

相关文章:

  • 购物网站模块是什么意思毕业设计做网站论文好写吗
  • 濮阳建设企业网站公司旅行网站建设的规划书
  • 高端上海网站设计公司phpwind 企业网站
  • 天津网站建设咨询菠菜网站开发哪家好
  • 网站开发和软件做常识的网站
  • 一个网站如何做推广网址链接查询
  • 高端自适应网站开发wordpress 首页显示全文
  • 机械类网站模板企业培训心得体会
  • 有关学风建设网站智能建站做网站好吗
  • 网站做兼容处理怎么企业网站制作的方法
  • 青岛专业做网站的学校建设评建工作网站
  • 自动化产品的网站建设营销型网站建设电话
  • 金华市建设局官方网站wordpress搭建表单
  • 网站模板对seo的影响html5 wap网站模板
  • 合江县住房和城乡规划建设局网站东莞企石网站建设
  • 自己做菠菜网站顺德网站建设教程
  • 涿州网站制作吉林文明网设计专门页面
  • 珠海专业机械网站建设网站开发和网络设计有什么区别
  • 自己的电脑做服务器建立网站的方法企业融资渠道及技巧
  • p2p理财网站开发流程wordpress ssh安装
  • 北京市的重点门户网站有哪些手机百度关键词排名 网站优化软件
  • 做本地网站需要什么资质图展网站源码
  • 建设综合信息网站需要多少钱深圳网站建设html5
  • 免费域名网站黄的免费网站上传视频怎么做
  • 网站制作内容新手学习网站建设
  • 电商网站设计文档最新企业网站
  • 网站怎么优化关键词快速提升排名wordpress免签约微信支付
  • 永久免费素材网站陕西企业名录大全
  • vue2.0网站开发网站自己的
  • 贵阳网站开发多少钱seo网站设计就业前景