LeetCode-62-不同路径-动态规划

题目描述:

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 "Start" )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 "Finish" )。

问总共有多少条不同的路径?

题目链接: LeetCode-62-不同路径

解题思路:详见注释~
代码实现:

java 复制代码
class Solution {
    public int uniquePaths(int m, int n) {
        // 1. dp[i][j]含义:走到(i,j)位置有dp[i][j]条路径
        // 2. 递推公式:dp[i][j]依赖与 dp[i-1][j] 和 dp[i][j-1]的路径个数
        //            dp[i][j] = dp[i-1][j] + dp[i][j-1]
        // 3. 如何初始化:第一行和第一列均初始化为 1,不管怎么走都只有一种方法,要么一直向右,要么一直向下
        //          dp[0][j]=1
        //          dp[i][0]=1
        // 4. 遍历顺序:从左上到右下

        // 定义一个二维的dp数组
        int[][] dp = new int[m][n];
        for (int i = 0; i < m; i++) {
            dp[i][0]=1;
        }
        for (int i = 0; i < n; i++) {
            dp[0][i]=1;
        }

        for (int i = 1; i < m; i++) {
            for (int j = 1; j < n; j++) {
                dp[i][j]=dp[i-1][j] + dp[i][j-1];
            }
        }
        return dp[m-1][n-1];
    }
}
相关推荐
谢铭轩1 分钟前
题解:P8035 [COCI 2015/2016 #7] Otpor
c++·算法
listhi5205 分钟前
双目立体视觉中的彩色SAD算法
算法
爱coding的橙子9 分钟前
Day87:2.12:leetcode 动态规划8道题,用时3h
算法·leetcode·动态规划
星火开发设计13 分钟前
虚析构函数:解决子类对象的内存泄漏
java·开发语言·前端·c++·学习·算法·知识
2501_9011478316 分钟前
幂函数实现的优化与工程思考笔记
笔记·算法·面试·职场和发展·php
好大的月亮17 分钟前
中值法排序及LexoRank排序算法简述
java·算法·排序算法
闻缺陷则喜何志丹21 分钟前
【拆位法】P9277 [AGM 2023 资格赛] 反转|普及+
c++·算法·位运算·拆位法
HAPPY酷41 分钟前
std::pair` 与 `std::map` 基础
开发语言·c++·算法
喜欢吃燃面1 小时前
基础算法:高精度
开发语言·c++·学习·算法
努力学算法的蒟蒻1 小时前
day84(2.12)——leetcode面试经典150
算法·leetcode·面试