zoukankan      html  css  js  c++  java
  • leetcode63 不同路径

    这种题目大多不用搜索,首选简单数学方法和动态规划。这里用的是动态规划如果网络只有两行的话可以用数学方法。简单的dp问题,题目求什么dp数组设什么就好。转移条件也很简单。注意判断边界情况,数组设置成long long不然会爆int。

    class Solution {
    public:
        int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
            long long dp[105][105];
            if(obstacleGrid.empty()||obstacleGrid[0].empty())
            {
                return 0;
            }
            if(obstacleGrid[0][0]==1)
                return 0;
            int row=obstacleGrid.size();
            int col=obstacleGrid[0].size();
            int i;
            dp[0][0]=1;
            for(i=0;i<row;i++)
            {
                if(obstacleGrid[i][0]!=0)
                {
                    for(;i<row;i++)
                    {
                        dp[i][0]=0;
                    }
                    break;
                }
                else
                    dp[i][0]=1;
            }
            for(i=0;i<col;i++)
            {
                if(obstacleGrid[0][i]==1)
                {
                    for(;i<col;i++)
                        dp[0][i]=0;
                    break;
                }
                else
                    dp[0][i]=1;
            }
            int j;
            for(i=1;i<row;i++)
            {
                for(j=1;j<col;j++)
                {
                    if(obstacleGrid[i][j]==1)
                        dp[i][j]=0;
                    else
                        dp[i][j]=dp[i][j-1]+dp[i-1][j];
                }
            }
            return dp[row-1][col-1];
        }
    };
  • 相关阅读:
    Docker 镜像
    Docker 安装命令
    Docker 基本概念
    Redis 高可用之"持久化"
    Git 安装和使用
    oracle角色
    oracle权限
    审计
    手动创建数据库
    oracle口令文件认证
  • 原文地址:https://www.cnblogs.com/legendcong/p/12535438.html
Copyright © 2011-2022 走看看