LeetCode上的经典动态规划问题

63. 不同路径II

动态规划:
1. 状态表示:每个格子表示到那个格子的方案数量
2. 状态计算:每个格子由上和左求和决定,当格子为1时候,直接记为0.
3. 初始状态:dp[0][0] = 1- nums[0][0]。
class Solution {
    public int uniquePathsWithObstacles(int[][] nums) {
        if (nums == null)
            return 0;
        int n = nums.length; int m = nums[0].length;
        int[][] state = new int[n][m];
        state[0][0] = 1 - nums[0][0];
        for (int i =0; i< n; i++){
            for (int j = 0; j < m; j++){
                if (i == 0 && j == 0)
                    continue;
                if (nums[i][j] == 1)
                    state[i][j] = 0;
                else{
                    if (i >0)
                        state[i][j] += state[i - 1][j];
                    if (j >0)
                        state[i][j] += state[i][j - 1];
                }
            }
        }
        
        return state[n - 1][m - 1];
    }
}

62. 不同路径


class Solution {
    public int uniquePaths(int m, int n) {
        if (m == 0 || n == 0)
            return 0;
        int[][] dp = new int[m][n];
        dp[0][0] = 1;
        for (int i = 0; i < m; i++){
            for (int j = 0; j < n; j++){
                if (i > 0)
                    dp[i][j] += dp[i -1 ][j];
                if (j > 0)
                    dp[i][j] += dp[i][j - 1];
            }
        }
        
        return dp[m - 1][n - 1];
    }
} 
全部评论

相关推荐

09-17 10:53
四川大学 C++
loveTy:你这些技能对大厂没用,而且四川大学因为之前地铁那个事件上了不少民营企业的黑名单。 去试一试国企,他们的黑名单没民营那么狠
点赞 评论 收藏
分享
阿武同学:基本信息保留前面三行,其他的可以全部删掉,邮箱最重要的你没写,主修课程精简到8个以内,实习里面2/3/4都是水内容的,非要写的话建议两到三句话,项目经历排版优化下,自我评价缩到三行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务