LeetCode62. 不同路径(java解法——动态规划)

news2024/11/23 12:19:09

1 题目描述

一个机器人位于一个 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

2 算法设计

  • 确定dp数组,(dp table)以及下标的含义
    dp数组为一个二维数组,dp[i]表示走到第i个位置有多少种不同路径
        int[][] dp = new int[m][n];
  • dp数组初始化
    因为只能向右或向下走,所以第0行的所以位置只有一种的路径,因此将dp的第一行初始化为1。
  • 确定递推公式
    在这里插入图片描述
    如示例4可知,因为每次只能向左或向下走,所以dp数组中的第0行和第0列都只有一种路径可走。对于其他位置,每个位置的不同路径等于相邻的左边位置的路径数加上相邻的上边位置的路径数。即存在递推关系:
dp[i][j] = dp[i-1][j] + dp[i][j-1]  其中i>=1 && j >=1
  • 确定遍历顺序
    遍历顺序,从左到右顺序遍历即可

3 代码实现

public int uniquePaths(int m, int n) {
        //确定dp数组 dp[i]表示走到第i个位置有多少种不同路径
        int[][] dp = new int[m][n];

        //初始化dp
        //因为只能向右或向下走,所以第0行的所以位置只有一种的路径,因此将dp的第一行初始化为1
        for (int i = 0;i<n;i++){
            dp[0][i] = 1;
        }
        //同理,第0列也只有一种路径可走 因此将第0列初始话为1
        for (int j=0;j<m;j++){
            dp[j][0] = 1;
        }

        //递推公式 dp[i][j] = dp[i-1][j] + dp[i][j-1]  其中i>=1 && j >=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];
    }

4 测试结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/91202.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑一键重装一直在系统优化升级怎么办

小白一键重装一直在系统优化升级怎么办?电脑总是卡在这个画面上&#xff0c;遇到这种情况该怎么解决呢?遇到这种情况大家也不要慌&#xff0c;小面小编就来演示下如何解决小白一键重装一直在系统优化升级的问题。 工具/原料&#xff1a; 系统版本&#xff1a;win10家庭版 …

电脑免费录屏软件哪个好用?分享3款,亲测好用

相比于图片&#xff0c;视频给人的感受更加通俗易懂&#xff0c;短短几分钟的视频&#xff0c;就能将几十张图片想要表达的意思给表达出来。电脑录屏正是制作视频的其中一部分&#xff0c;但也有不少的小伙伴对于电脑录屏不太熟悉&#xff0c;希望小编分享一些电脑免费录屏软件…

HTML语法学习以及作业解答

文章目录技巧html标签练习作业01作业02作业03作业04作业05作业06作业07作业08作业09作业10技巧 1 输入 html5即可补全出html的骨架&#xff0c;或者是&#xff01; tab键 2 MDN网站&#xff1a;https://developer.mozilla.org/zh-CN/ 3 div带回车&#xff0c;span后面不带回…

计组 | DRAM芯片、多模块存储器、加法器标志位、软件硬件的关系、扩展操作码、程序转换过程

内容来自 —— 王道 自用学习笔记整理 一、DRAM芯片与内存条 1.1、DRAM芯片 1.2、访问内存时DRAM芯片读取过程 多个芯片并行传输,每一轮每个芯片的行列都相同,n个芯片就会有n个超元 n个超元加起来就是数据总线的长度,如图中超元=8位,数据总线=8个超元=64位 1.3、DRAM引脚数…

使用Apifox创建Mock智能操作

去接口管理新建一个接口来设计 然后直接保存运行&#xff0c;就可以发现已经自动为我们的Mock添加上了相关的属性值&#xff0c;只需要输入相关的字段名就可以了。 设置自定义智能Mock&#xff0c;之前我们智能Mock生成的数据都是通过这个工具实现的。只要你的值匹配上了就会通…

从数据治理到数据应用,制造业企业如何突破数字化转型困境丨行业方案

我国制造业拥有31个大类、179个中类和609个小类&#xff0c;是全球产业门类最齐全、产业体系最完整的制造业。作为世界工厂&#xff0c;中国制造业在拉动本国经济增长、促进本国就业等方面贡献卓越&#xff0c;更是我国民生消费的底层基础。同时&#xff0c;中国从原来的原料出…

OpenSSL QuickStart

文章目录1. Windows环境PerlnasmOpenSSL编译VS测试项目2. Linux环境编译测试项目参考资料1. Windows环境 Windows 10VS 2019nasm汇编工具&#xff1a;https://nasm.us/Perl: 官网地址https://www.perl.org/get.htmlOpenSSL&#xff1a; 官网地址&#xff1a;https://www.opens…

2022下半年软件设计师备考经验帖

祝大家逢考必过 7月1号备考-11月05号考试 推荐up主&#xff1a;zst_2001 跟着视频来基本必过 以下是复习资料 章节章节01 - 计算机组成原理与体系结构07 - 法律法规与标准化与多媒体基础02 - 操作系统基本原理08 - 设计模式03 - 数据库系统09 - 软件工程04 - 计算机网络10 - …

垂直领域问答小程序开发,打开知识领域无限能量

知乎作为一款问答类app&#xff0c;深受大众信赖&#xff0c;知乎构建了一个人人都可以便捷接入的知识分享网络&#xff0c;让人们便捷的与世界分享知识、经验和见解&#xff0c;让我们发现更大的世界。知乎的成功让很多人看到了垂直领域问答小程序存在的商机&#xff0c;想要进…

[JavaScript]使用opencv.js实现基于傅里叶变换的频域水印(隐水印)

PS&#xff1a;查了多方资料&#xff0c;都没有提到用 JavaScript 来实现频域水印的教程&#xff0c;故经过笔者的实践&#xff0c;遂写一篇教程来简单介绍。 通过了解频域水印的相关知识&#xff0c;我理解了频域水印就是先将图片进行傅里叶变换&#xff0c;得到频域图&#x…

全国制造业新产品开发流程管理(甄选班)招生简章

近来&#xff0c;越来越多的TO C企业已经将业务从C端转型到了B端&#xff0c;而传统的市场品牌部门除了品牌相关的工作&#xff0c;也将会越来越多承担企业“增长”的业务&#xff1b;“营”与“销”脱节的是市场部门也越来越受到了Diss。 那么&#xff0c;To B产品经理能力提…

package xxx does not exist

1、开发环境如下&#xff1a; gradle 7.3.3: gradle插件&#xff1a;7.2 AS&#xff1a; 2、报错日志 /Users/andrew/Documents/React/Code/TestRetrofit/app/src/main/java/com/lwd/testretrofit/MainActivity.java:8: error: package com.lwd.testretrofit.lwd does not e…

如何用好图表?

如何选择合适的图表&#xff1f; 在可视化图表中&#xff0c;基于不同的目的&#xff0c;我们要选择不同的图表 一般情况下&#xff0c;我们需要借助图表达成4个目的&#xff1a;展示比较&#xff0c;展示分布&#xff0c;展示联系&#xff0c;展示构成 一.作用 1.展示比较 …

数据结构-克鲁斯卡尔算法,普利姆算法(求最小生成树)

当然了昨天晚上写了求两源点之间最少权值和&#xff0c;就不得不再写一下另外两个求最小生成树的算法分别是克鲁斯卡尔和普利姆了&#xff0c;话不多说直接进入主题 目录 并查集&#xff1a; 克鲁斯卡尔算法(与并查集结合起来)&#xff1a; 普利姆算法&#xff1a; 并查集&a…

[附源码]Python计算机毕业设计高校教学过程管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

产品诚可贵,质量价更高

产品诚可贵&#xff0c;质量价更高缘起所属行业研发人员规模所在团队规模团队开发模式产品类别软件主体层次软件交付周期软件需求质量/感受/问题设计质量保证及好与不好开源组件代码质量千行缺陷数单元测试代码覆盖率和测试质量质量文化和QA人员测试团队人员配置质量工程活动功…

第4篇:嵌入式Linux应用开发基础知识

嵌入式Linux应用开发基础知识一、GCC编译过程二、MakefileMakefile的引入及规则Makefile的语法a. 通配符b. 假想目标: .PHONYC. 变量Makefile函数函数foreach函数filter/filter-outWildcardpatsubst函数Makefile实例通用MakefikeMakefikeMakefile.build说明.txt三、TCPserver.c…

springMVC+mysql实现的Java web图书管理系统源码+运行教程+参考论文

今天给大家演示的是一款由srpingMVC实现的Java web图书管理系统&#xff0c;本项目功能非常丰富&#xff0c;且附带配套论文及视频指导配置运行教程&#xff0c;系统实现的功能主要有&#xff1a;图书馆里、图书分类管理、出版社管理、图表图书统计展示、用户管理、角色管理、权…

小村庄迸发大能量,桃浦村“藏”着花样经,“烘”出财富来

从几人的小公司到产税千万级的高新技术和数集团企业总部;从拿着10万元注册资金开公司处处碰壁的小公司到家喻户晓的国牌护肤品林清轩……在普陀区桃浦镇的桃浦村&#xff0c;默默“耕耘”出了一家家优秀的民营企业。 筑巢引凤聚人才&#xff0c;注入乡村振兴新动能。在上海市委…

【数据结构】二叉树的前序遍历、中序遍历、后序遍历、层序遍历

文章目录 1.二叉树的概念 1.1概念 1.2存储方式 1.3特殊的二叉树 1.4规律 2.二叉树的实现 2.1表现方式 2.2遍历 2.2.1前序遍历 思想 代码 详细分析 2.2.2中序遍历 2.2.3后序遍历 2.2.4层序遍历 思想 代码 详细过程 1.二叉树的概念 1.1概念 一棵二叉树是结点的一个有限…