zoukankan      html  css  js  c++  java
  • leecode第六十三题(不同路径 II)

    class Solution {
    public:
        int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
            int m=obstacleGrid.size();
            if(m==0)
                return 0;
            int n=obstacleGrid[0].size();
            
            vector<vector<long>> path(m,vector<long> (n,0));//建立一个二维数组
            
            for(int i=m-1;i>=0;i--)//从右下角到左上角遍历
            {
                for(int j=n-1;j>=0;j--)
                {
                    if(obstacleGrid[i][j]==1)//如果是不能过的地方,直接给0
                    {
                        path[i][j]=0;
                        continue;
                    }
                    if(i==m-1&&j==n-1)//特殊情况,终点给1
                    {
                        path[i][j]=1;
                        continue;
                    }
                    
                    long temp_down,temp_right;//考虑边界情况
                    if(i==m-1)
                        temp_down=0;
                    else 
                        temp_down=path[i+1][j];
                    if(j==n-1)
                        temp_right=0;
                    else
                        temp_right=path[i][j+1];
                    
                    path[i][j]=temp_down+temp_right;//动态规划,当前节点可能的路径等于下面和右面的节点路径可能之和
                }
            }
            return path[0][0];
        }
    };

    分析:

    首先时那个long字型,因为有的案例步子太多了。第二就是那个

    if(i==m-1&&j==n-1)//特殊情况,终点给1

    这个给且不小心写成或了。

  • 相关阅读:
    C语言第三天,《常量指针和指针常量》
    树莓派系统烧入总结
    c 语言第一天
    7. Vue
    6. Vue
    5. Vue
    4. Vue
    3. Vue
    1. Vue
    2. Vue
  • 原文地址:https://www.cnblogs.com/CJT-blog/p/10885176.html
Copyright © 2011-2022 走看看