【动态规划】LeetCode-62.不同路径

🎈算法那些事专栏说明:这是一个记录刷题日常的专栏,每个文章标题前都会写明这道题使用的算法。专栏每日计划至少更新1道题目,在这立下Flag🚩
🏠个人主页:Jammingpro
📕专栏链接:算法那些事
🎯每日学习一点点,技术累计看得见

题目

题目描述

一个机器人位于一个 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
题目数据保证答案小于等于 2 * 1 0 9 10^9 109

题解

以示例1为例,因为机器人只能向右或向下移动,因而到达第0行和第0列各个方格的方法数均为1。而到达map[i][j]的方法数等于map[i-1][j]+map[i][j-1],即当前方格同一列的上一行方法数+当前方格同一行的前一列方法数加和。因为可以从上面一个方格向下走1步到达当前方格,也可以从左侧方格走1步到达当前方格。如下图所示,通过不断执行map[i][j]=map[i-1][j]+map[i][j-1],最终map[m-1][n-1]中将保存到达右下角方格的方法数。
在这里插入图片描述
从而我们可以得到如下代码↓↓↓

class Solution {
public:int uniquePaths(int m, int n) {vector<vector<int>>map(m,vector<int>(n));//将第0行初始化为1for(int i = 0; i < n; i++){map[0][i] = 1;}//将第0列初始化为1for(int i = 0; i < m; i++){map[i][0] = 1;}for(int i = 1; i < m; i++){for(int j = 1; j < n; j++){map[i][j]=map[i-1][j]+map[i][j-1];}}return map[m-1][n-1];}
};

这里我们使用了两次循环去初始化第0行和第0列,我们可以通过多开辟一行一列,并将map[0][1]初始化为1,这时,我们就不再需要初始化第1行第1列。而我们的结果保存在map[m][n]。
ps:这个方法很巧妙,就是不大好描述。大家看一下下方代码,大脑运行一下。↓↓↓

class Solution {
public:int uniquePaths(int m, int n) {vector<vector<int>>map(m + 1, vector<int>(n + 1));map[0][1] = 1;for(int i = 1; i <= m; i++)for(int j = 1; j <= n; j++)map[i][j] = map[i - 1][j] + map[i][j - 1];return map[m][n];}
};

本文存在不足,欢迎留言或私信批评、指正。希望我的解决方法能够对你有所帮助~~
今日打卡完成,点亮小星星☆→★

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

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

相关文章

java -jar后台启动jar包

Linux系统启动&#xff08;后台&#xff09; nohup java -jar springboot-0.0.1-SNAPSHOT.jar & 查看日志 tail -500f nohup.out 查看进程号 ps -ef | grep java 关闭 kill -9 [进程号] Windows系统 java -jar springboot-0.0.1-SNAPSHOT.jar & Ctrlc或者关…

Flink之复杂事件处理CEP

复杂事件处理CEP Flink CEP基本使用添加依赖定义匹配模式定义匹配结果验证 模式Pattern API单个模式量词条件 组合模式跳过策略模式组匹配结果 应用示例自定义消息事件自定义Pattern测试 Flink CEP Flink的CEP (Complex Event Processing) 是指Flink提供的一种用于处理复杂事件…

ubuntu1804安装jupyter中的js环境

参考&#xff1a; https://github.com/n-riesco/ijavascript http://n-riesco.github.io/ijavascript/#installation https://github.com/n-riesco/ijavascript/issues/241 https://www.tomche.space/post/using-javascript-kernel-in-vscode-jupyter-notebooks/ https://w…

淘宝商品详情接口在电商运营中的应用实例

一、背景 某电商企业A在运营过程中&#xff0c;发现手动更新商品信息效率低下&#xff0c;且容易出现信息不一致的情况。为了解决这个问题&#xff0c;企业A决定采用淘宝商品详情接口&#xff0c;实现商品信息的自动获取和更新。 二、目标 通过集成淘宝商品详情接口&#xf…

HNU-计算机网络-讨论课2

第二次 有关网络智能、安全以及未来网络的讨论 一、必选问题&#xff08;每组自由选择N个&#xff0c;保证组内每人负责1个&#xff09; 网络的发展促进信息的传播&#xff0c;极大提高了人类的感知能力&#xff0c;整个世界都被纳入人类的感知范围。但人们对信息系统以及数据…

手持式安卓主板_PDA安卓板_智能手持终端方案

手持式安卓主板方案是一种智能终端设备&#xff0c;具备自动对焦和闪光灯功能&#xff0c;可以在昏暗的环境下快速扫描二维码并轻松采集数据。该方案还提供多渠道支付和数据采集功能&#xff0c;为用户提供了便捷的体验。 该方案的产品基于手持式安卓主板&#xff0c;并搭载了八…

海南省某部队实现资产管理和IP地址管理

在快速发展的网络环境中&#xff0c;如何有效管理资产和IP地址已成为众多组织面临的挑战。海南省某部队&#xff0c;作为一个肩负重要使命的单位&#xff0c;对此有着更为迫切的需求。为了应对这一挑战&#xff0c;他们选择了一个备受赞誉的系统管理平台——监控易&#xff0c;…

利用jQuery实现AJAX定时刷新局部页面实例

通过两种方法实例讲解ajax定时刷新局部页面&#xff0c;当然方法有很多种&#xff0c;也可以不使用ajax来刷新页面&#xff0c;可以使用jquery中的append来给指定内容加东西&#xff0c;但是都不太实用&#xff0c;最实用的方法还是ajax加载数据了。 方法一&#xff1a; 局部刷…

JAVA优化: MD5 加密的工具类

MD5 加密的工具类&#xff0c;提供了对字符串进行 MD5 加密的功能。主要包括以下几个方法&#xff1a; md5(String s)&#xff1a;对传入的字符串进行 MD5 加密&#xff0c;并返回加密后的字节数组。toHex(byte hash[])&#xff1a;将字节数组转换为十六进制字符串表示。hash(…

ApplicationRunner 类

优质博文&#xff1a;IT-BLOG-CN 在开发中可能会有这样的情景。需要在容器启动的时候执行一些内容。比如读取配置文件&#xff0c;数据库连接之类的。SpringBoot给我们提供了两个接口来帮助我们实现这种需求。这两个接口分别为CommandLineRunner和ApplicationRunner。他们的执…

JavaScript 代码整洁技巧

为什么代码要整洁&#xff1f; 代码质量与整洁度成正比。有的团队在赶工期的时候&#xff0c;不注重代码的整洁&#xff0c;代码写的越来越糟糕&#xff0c;项目越来越混乱&#xff0c;生产力也跟着下降&#xff0c;那就必须找更多人来提高生产力&#xff0c;开发成本越来越高…

C/C++,图算法——求强联通的Tarjan算法之源程序

1 文本格式 #include <bits/stdc.h> using namespace std; const int maxn 1e4 5; const int maxk 5005; int n, k; int id[maxn][5]; char s[maxn][5][5], ans[maxk]; bool vis[maxn]; struct Edge { int v, nxt; } e[maxn * 100]; int head[maxn], tot 1; vo…

Unity UGUI控件之Horizontal Layout Group

Horizontal Layout Group是Unity中的UGUI控件&#xff0c;用于在水平方向上对子对象进行布局。 主要有一下作用&#xff1a; 水平布局&#xff1a;Horizontal Layout Group将子对象按照水平方向进行布局&#xff0c;可以控制子对象的排列顺序和间距。自动调整尺寸&#xff1a…

不到1000行代码,PyTorch团队让Llama 7B提速10倍

在过去的一年里&#xff0c;生成式 AI 发展迅猛&#xff0c;在这当中&#xff0c;文本生成一直是一个特别受欢迎的领域&#xff0c;很多开源项目如 llama.cpp、vLLM 、 MLC-LLM 等&#xff0c;为了取得更好的效果&#xff0c;都在进行不停的优化。 作为机器学习社区中最受欢迎框…

面试就是这么简单,offer拿到手软(四)—— 常见java152道基础面试题

面试就是这么简单&#xff0c;offer拿到手软&#xff08;一&#xff09;—— 常见非技术问题回答思路 面试就是这么简单&#xff0c;offer拿到手软&#xff08;二&#xff09;—— 常见65道非技术面试问题 面试就是这么简单&#xff0c;offer拿到手软&#xff08;三&#xff…

WIN10下解决HIVE 初始化MYSQL表报错:Unknown version specified for initialization

今天本地WINDOWS装HIVE&#xff0c;走到最后一步初始化数据库死活不通过&#xff1a; D:\hive\hive-rel-release-3.1.3\bin\ext>hive --service schematool -dbType mysql -initSchema --verbose SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found bind…

flask 上传文件

from flask import Flask, request, render_template,redirect, url_for from werkzeug.utils import secure_filename import os from flask import send_from_directory # send_from_directory可以从目录加载文件app Flask(__name__)#UPLOAD_FOLDER media # 注意&#xff…

深入理解强化学习——马尔可夫决策过程:占用度量-[代码实现]

分类目录&#xff1a;《深入理解强化学习》总目录 在文章《深入理解强化学习——马尔可夫决策过程&#xff1a;占用度量-[基础知识]》我们介绍了占用度量的基础知识&#xff0c;本文我们编写代码来近似估计占用度量。这里我们采用近似估计&#xff0c;即设置一个较大的采样轨迹…

会声会影2024购买多少钱 会声会影在哪里购买

掌握视频编辑技术&#xff0c;能为我们的工作和生活带来很多帮助。例如&#xff1a;将我们精心编辑的视频&#xff0c;上传到抖音、快手等平台进行变现&#xff1b;通过天马行空的视频创意&#xff0c;摇身一变成为B站up主。因此&#xff0c;拥有一款像会声会影这样的视频编辑软…

信号可靠性剖析

问题 基于信号发送的进程间通信方式可靠吗&#xff1f;&#xff1f;&#xff1f; 信号查看(kill -l) 信号的分类 不可靠信号 (传统信号) 信号值在 [1, 31] 之间的所有信号 可靠信号 (实时信号) 信号值在 [SIGRTMIN&#xff0c;SIGRTMAX]&#xff0c;即&#xff1a;[34&…