当前位置:编程学堂 > 代码随想集二刷三十九天| 62.不一样的路 63.不一样的路II

代码随想集二刷三十九天| 62.不一样的路 63.不一样的路II

  • 发布:2023-10-04 03:16

代码随想训练营二刷三十九天| 62. 不同的路径 63. 不同的路径 II

1。 62. 不同的道路

问题链接:https://www.sychzs.cn/problems/unique-paths/
思路:dp[i][j]表示从(0,0)到[i,有dp[i], j][j]这种路线,因为每次只能向右走一步或者向下走一步,到达[i][j]只能从[i-1][j]和[i]开始[j-1],则dp[i][j]=dp[i-1][j]+dp[i][j-1],初始化第一行第一列为1,从左遍历到右,从上到下。

 解决方案 {公共int uniquePaths(int m, int n) {int [][] 数字=  int[m] [n];对于(int=0;我 < m; i++) {nums[i][0]=1;}对于int=0; i < n; i++) {nums[0][] i]=1;}对于int我 = 1; i < m; i++) {对于  (int j = 1; j < n; j++) {nums[ i][j]= nums[i-1] [j]+数字[i][j-1];}}返回nums[m-1][n-1];} }

II、63. 不同的路径II

问题链接:https://www.sychzs.cn/problems/unique-paths-ii/
思路:思路与上一题相同。当初始化遇到石头时,立即终止,遍历计算 dp[i][j ] 跳过石头。

 解决方案 {公共intuniquePathsWithObstaclesint[][]障碍网格{int=障碍网格.长度, n =障碍网格[0].长度;int[] []nums=int[m][n ];对于int= 0; i < m ;i++){if(障碍网格[i][0]==1); nums[i][0]=1;}对于(int= 0; i < n; i++){如果 (障碍网格[0][i] ==1) ;nums[0][i]= 1}对于int=1; i < m; i++) {对于 ( int j = 1; j < n; j++) {if (障碍网格[i][j]1 ==1)继续; nums[i][j] =nums[i -1][j]+nums[ i][j-1];}}返回nums[m-1][n -1];}}

相关文章