zoukankan      html  css  js  c++  java
  • leetcode每日刷题计划--day62

    Num 62 不同路径 && Num 63 不同路径 ||

    两道题都是基础动态规划,注意求总可能的题是上一可能节点相加

    虽然数据范围只有100*100,但是可能结果爆int的,用long表示

    有障碍的就多了一个筛选条件

    代码如下

    class Solution {
    public:
        int uniquePaths(int m, int n) {
            int dp[105][105];
            memset(dp,0,sizeof(dp));
            dp[1][1]=1;
            for(int i=1;i<=m;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    if(i>=2 && j>=2)
                    dp[i][j]=dp[i-1][j]+dp[i][j-1];
                    else if(i>=2)
                    dp[i][j]=dp[i-1][j];
                    else if(j>=2)
                    dp[i][j]=dp[i][j-1];
                    //cout<<"i: "<<i<<"j: "<<j<<"dp[i][j]: "<<dp[i][j]<<endl;
                }
            }
            return dp[m][n];
        }
    };
    Num 62
    class Solution {
    public:
        int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
            int m=obstacleGrid.size();
            int n=obstacleGrid[0].size();
            if(obstacleGrid[m-1][n-1]==1) return 0; 
            long dp[105][105];
            memset(dp,0,sizeof(dp));
            dp[1][1]=1;
            for(int i=1;i<=m;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    if(i==1 && j==1)
                        continue;
                    if(obstacleGrid[i-1][j-1]==1)
                    {
                        dp[i][j]=-1;
                        continue;
                    }
                    if(i>=2 && j>=2 && obstacleGrid[i-2][j-1]!=1 && obstacleGrid[i-1][j-2]!=1)
                    {
                        dp[i][j]=dp[i-1][j]+dp[i][j-1];
                    }
                    else if(i>=2 && obstacleGrid[i-2][j-1]!=1)
                    {
                        dp[i][j]=dp[i-1][j];
                    }
                    else if(j>=2 && obstacleGrid[i-1][j-2]!=1)
                    {
                        dp[i][j]=dp[i][j-1];
                    }
                }
            }
            return dp[m][n];
        }
    };
    Num 63
    时间才能证明一切,选好了就尽力去做吧!
  • 相关阅读:
    return和exit以及C语言递归函数
    一个C语言外挂程序
    thinkphp查询构造器和链式操作、事务
    thinkphp一般数据库操作
    thinkphp上传图片
    thinkphp类型转换
    解决索引中碎片的问题
    SQL SERVER中非聚集索引的覆盖,连接,交叉,过滤
    兼容IE的CSS的”引入方式“
    CSS之display:block与display:inline-block
  • 原文地址:https://www.cnblogs.com/tingxilin/p/12005156.html
Copyright © 2011-2022 走看看