当前位置: 首页 > article >正文

leetcode62.不同路径

标签:多维动态规划

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?

示例 1:

输入:m = 3, n = 7
输出:28

示例 2:

输入:m = 3, n = 2
输出:3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。
1. 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右
3. 向下 -> 向右 -> 向下

示例 3:

输入:m = 7, n = 3
输出:28

示例 4:

输入:m = 3, n = 3
输出:6

提示:1 <= m, n <= 100

思路:属于多维动态规划问题,使用二维数组解决。dp[i] [j] 表示到第 i 行 j 列格子有多少种走法,注意初始化第一行和第一列都是1种走法。递归公式思路为 —— 一个格子要么从左边来,要么从右边来,因此一个格子走法等于二者之和。

public int uniquePaths(int m, int n) {
        //dp[i][j]表示到第i行j列格子有多少种走法
        int [][] dp=new int [m][n];
        for(int i=0;i<m;i++){
            // 注意初始化第一行和第一列为1
            for(int j=0;j<n;j++){
                if(i==0||j==0)
                    dp[i][j]=1;
                else
                    //要么从左边来,要么从上边来
                    dp[i][j]=dp[i-1][j]+dp[i][j-1];
            }
        }
        return dp[m-1][n-1];
    }


http://www.kler.cn/a/533316.html

相关文章:

  • blender 相机参数
  • UE求职Demo开发日志#21 背包-仓库-装备栏移动物品
  • CSS布局(一)flex一篇搞定
  • Java基础——分层解耦——IOC和DI入门
  • 渗透测试之文件包含漏洞 超详细的文件包含漏洞文章
  • 《周易》中的思想和方法在IT中的应用可能性探讨
  • 【Block总结】CFBlock,对齐CNN和Transformer特征|即插即用
  • 【含开题报告+文档+PPT+源码】基于Spring Boot的剧院购票平台的设计与实现
  • Windows图形界面(GUI)-QT-C/C++ - QT MDI Area
  • 优选算法《前缀和》
  • PG vs MySQL 统计信息收集的异同
  • Python 操作列表(元组)
  • C++ Primer 表达式基础
  • 用 Node.js 实现一个上传图片接口
  • modbus协议处理
  • 深度整理总结MySQL——Join的工作原理
  • 机器学习常用包numpy篇(四)函数运算
  • [创业之路-281]:在其位谋其职,企业不同角色,关心不同的问题。企业高层的书单、企业中层的书单、一线员工的书单
  • YK人工智能(六)——万字长文学会基于Torch模型网络可视化
  • Node.js:其实后端没那么难?
  • Spring AI 智能体通过 MCP 集成本地文件数据
  • 陷入闭包:理解 React 状态管理中的怪癖
  • JAVA:Spring Boot 集成 Disruptor 的技术指南
  • 深入理解指针(5)
  • 双系统共用一个蓝牙鼠标
  • 【Leetcode 每日一题 - 补卡】922. 按奇偶排序数组 II