不同路径2 --动态规划
发布日期:2021-05-07 02:59:51 浏览次数:20 分类:精选文章

本文共 1114 字,大约阅读时间需要 3 分钟。

在这里插入图片描述

class Solution {       public int uniquePathsWithObstacles(int[][] obstacleGrid) {           /*        坐标型动态规划  计数        思路:我们求右下角的路径(m,n) = 到(m-1 ,n)+ (m,n-1)的路径的和        与上次不同的是:我们这次有障碍物        也就是Ob(i,j) = 1 的时候,我们设置为不可达 f[i][j]= 0          但是我们需要注意这时候就不能初始化一行一列了                  因为有障碍物的存在,所以我们初始化只能从最左上角的位置开始慢慢来进行初始化         数组含义:有多少条路径到达  只能从左面+上面到达某个格子         如果格子有障碍 设为0条路到达                */        int m = obstacleGrid.length;        int n = obstacleGrid[0].length;        int f[][] = new int[m][n];        if(obstacleGrid[0][0] == 1 ) return 0;        //初始化f[0][0]=1        f[0][0] = 1;        for(int i = 0 ; i < m ; i++){               for(int j = 0  ; j < n ;j++){                   //有障碍 不可到达                if(obstacleGrid[i][j]== 1){                       f[i][j] = 0;                }else{                       if(j-1 >= 0 ){   //看看左面有没有元素                        f[i][j] += f[i][j-1];                    }                    if(i - 1 >=0) {                           f[i][j] +=f[i-1][j] ; //看看上面有没有元素                    }                }            }        }        return f[m-1][n-1];    }}
上一篇:字符串解码--动态规划
下一篇:跳跃游戏---动态规划

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2025年04月06日 14时34分59秒