zoukankan      html  css  js  c++  java
  • LeetCode(63)Unique Paths II

    题目

    Follow up for “Unique Paths”:

    Now consider if some obstacles are added to the grids. How many unique paths would there be?

    An obstacle and empty space is marked as 1 and 0 respectively in the grid.

    For example,
    There is one obstacle in the middle of a 3x3 grid as illustrated below.

    [
    [0,0,0],
    [0,1,0],
    [0,0,0]
    ]
    The total number of unique paths is 2.

    Note: m and n will be at most 100.

    分析

    带障碍的路径数计算问题,这个题目与上一题的区别之处在于,m*n的矩阵中有部分设置了障碍,当然有障碍的地方不能通过;

    虽然设立了障碍,该题目的本质仍然是一个动态规划问题,我们只需要增加判断当前点是否有障碍的代码即可,若有障碍那么此处不能通行,自然f(i,j)=0,对于其他点,依然用上一题目的推导公式即可!

    AC代码

    //直接用非递归算法求解
    class Solution {
    public:
        int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
    
            if (obstacleGrid.empty())
                return 0;
    
            int m = obstacleGrid.size();
            int n = obstacleGrid[0].size();
    
            vector<vector<int> > ret(m, vector<int>(n, 0));
    
            //矩阵首列
            for (int i = 0; i < m; i++)
            {
                //无障碍,则有一条路径,否则不通
                if (obstacleGrid[i][0] != 1)
                    ret[i][0] = 1;
                else
                    break;
            }//for
    
            //矩阵首行
            for (int j = 0; j < n; j++)
            {
                //无障碍,则有一条路径,否则不通
                if (obstacleGrid[0][j] != 1)
                    ret[0][j] = 1;
                else
                    break;
            }//for
    
            //其余位置
            for (int i = 1; i < m; i++)
            {
                for (int j = 1; j < n; j++)
                {
                    //当前位置为障碍,则到此处路径数为0
                    if (obstacleGrid[i][j] == 1)
                        ret[i][j] = 0;
                    else{
                        ret[i][j] = ret[i][j - 1] + ret[i - 1][j];
                    }//else
                }//for
            }//for
    
            return ret[m - 1][n - 1];
        }//uniques
    
    };

    GitHub测试程序源码

  • 相关阅读:
    上传图片到FTP的实例
    关于浏览器兼容问题:获取div的值
    多张表数据导入到execl中
    把泛型转换成dataTable
    关于游标
    Excel 公式 两个时间比大小
    SQL 执行顺序
    VBA实现随意输入组合码,查询唯一标识码
    IIS7 503错误 Service Unavailable
    汇总文件数据 VBA
  • 原文地址:https://www.cnblogs.com/shine-yr/p/5214869.html
Copyright © 2011-2022 走看看