[dp] LeetCode 62. Unique Paths

输入:两个int m和n
输出:一个int,表示不同路径的个数。
规则:有一个m行n列的矩阵,一个机器人从左上角走到右下角,每次向下或者向右走一格。

分析:目的是要找到从(0,0)到(m-1,n-1)有多少种不同 的走法。如果m=3,n=2。我们按照下图走一遍。知道有3种走法。先观察每种走法向下的箭头都是2个,向右的箭头都是1个。所以可以得出结论无论哪种走法向右和向下的数量是一定的。向下的数量是m-1,向右的数量是n-1。从(0,0)到(m-1,n-1)要经过m+n-2步。所以这就是一个组合题:Cm+n−2m−1C^{m-1}_{m+n-2}Cm+n2m1
在这里插入图片描述

	public int uniquePaths(int m, int n) {int a = Math.min(m,n)-1;int b = m+n-2;long p = 1;long q = 1;for(int i=0;i<a;i++){p = p * (b-i);q = q * (i+1);}return (int)(p/q);}

分析2:我们给这个矩阵每个方格用坐标表示(i,j)。
在这里插入图片描述
我们用dp[i][j]表示走到坐标(i,j)有多少种走法。
我们自己手画一下知道dp[1][1]=2,就是有2种路径到达(1,1)。看图中能够到达(1,1)只有可能是从(1,0)或者(0,1)这两个坐标走过来。那dp[1][1]与dp[1][0]、dp[0][1]是什么关系呢?
实际走一下,知道dp[0][1]=1,dp[1][0]=1,那么dp[1][1]=dp[1][0]+dp[0][1]。为了防止错误,再多走几个格子:dp[2][0]=1,dp[2][1]=dp[2][0]+dp[1][1]。从含义角度讲:经过(0,1)点达到(1,1)和经过(1,0)点到达(1,1)的路径肯定是不相同的,所以用加法不会出错,也不会计算重复了。所以得到动态方程:
dp[i][j]=dp[i−1][j]+dp[i][j−1]dp[i][j]=dp[i-1][j]+dp[i][j-1]dp[i][j]=dp[i1][j]+dp[i][j1]
第0行和第0列的数据需要单独初始化。

	public int uniquePaths(int m, int n) {int[][] dp = new int[m][n];dp[0][0] = 1;for(int j=1;j<n;j++){dp[0][j]=1;}for(int i=1;i<m;i++){dp[i][0] = 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];}

空间优化:

	public int uniquePaths(int m, int n) {int[] dp = new int[n];for(int j=0;j<n;j++){dp[j]=1;}for(int i=1;i<m;i++){for(int j=1;j<n;j++){dp[j] = dp[j]+dp[j-1];}}return dp[n-1];}

参考链接

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

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

相关文章

springboot 控制台程序读取配置文件(原创)

首先新建一个springboot项目&#xff0c;此处省略。 1.新建一个application.properties person.namekevin person.age6 person.sexmale 2.新建一个类&#xff0c;自动读取对应字段的值 有两种方式&#xff0c; 第一种 package cn.wq;import org.springframework.beans.factory.…

spring学习(27):通过setter依赖注入

目录结构 pox.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]50.什么是BLS基于对的签名方案?

这是一系列博客文章中最新的一篇&#xff0c;该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。 转载链接&#xff1a;https://www.cnblogs.com/zhuowangy2k/p/12248721.html

EF(Entity FrameWork)实体框架

一、 1、简称&#xff1a;实体框架 2、ADO.NET Entity FrameWork 是微软以ADO.NET为基础发展出来的对象关系对应&#xff08;O/R Mapping&#xff09;解决方案&#xff1b; 3、ORM框&#xff1a;对象关系映射&#xff08;Object-Relational Mapping&#xff09;&#xff0c;是一…

深度学习04-RNN

文章目录1 为什么需要RNN1.1RNN的应用场景1.2 DNN和CNN不能解决的问题2 RNN的网络结构2.1 RNN基础结构2.2 不同类型的RNN3 RNN的优化算法BPTT4 LSTM5 GRU1 为什么需要RNN 1.1RNN的应用场景 1 模仿论文&#xff08;生成序列&#xff09;。输入是一堆的论文文章&#xff0c;输出…

spring学习(28):处理自动装配的歧义性

pox.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]51.基于ID的加密安全模型,描述IBE方案

这是一系列博客文章中最新的一篇&#xff0c;该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。 在公钥密码学中&#xff0c;如果Alice想要给Bob发送一条消息&#xff0c;她需要Bob的公钥&#xff0c;一般来…

shell 脚本实现退点输出

1、elasticsearch启动脚本 1 #!/bin/bash2 export JAVA_HOME/usr/java/jdk1.8.0_201-amd643 export JAVA_BIN/usr/java/jdk1.8.0_201-amd64/bin4 export PATH$JAVA_BIN:$PATH5 export CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar6 export JAVA_HOME JAVA_BIN P…

spring学习(29):xml配置规范

目录结构 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

[dp] LeetCode 91. Decode Ways

输入&#xff1a;一个字符串&#xff0c;只包含0-9的字符。 输出&#xff1a;解码种类 规则&#xff1a;有一种信息映射规则 A->1,B->2…Z->26。 例如输入’1’&#xff0c;只能解码为A。 输入’12’&#xff0c;可以解码为’AB’&#xff0c;也可以是’L’&#xff0…

leetcode——背包问题汇总

本章来汇总一下leetcode中做过的背包问题&#xff0c;包括0-1背包和完全背包。 背包问题的通常形式为&#xff1a;有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。求解将哪些物品装入背包里物品价值总和最大。0-1背包和…

[密码学基础][每个信息安全博士生应该知道的52件事]52.先进的应用概念 系统的大致安全需求

这是一系列博客文章中最新的一篇&#xff0c;该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。我们希望学生知道从理论到实践的各个方面。但关键是你需要在密码学中考虑的不仅是对遵守规则的玩家的安全&am…

spring学习(32):使用junit4测试

目录结构 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

[dp]Leetcode 5. Longest Palindromic Substring

输入&#xff1a;一个字符串s 输出&#xff1a;最长的回文子串 规则&#xff1a;“abba"是一个回文 分析&#xff1a;输入是"babad”&#xff0c;输出"bab"。这个问题不能再按照之前分段的思路解决&#xff0c;或者说完全按照之前的思路。 之前的思路是&a…

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]38.隐蔽信道和侧信道的区别

这是一系列博客文章中最新的一篇&#xff0c;该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。 隐蔽信道和侧信道是两种不同的信息泄露信道 隐蔽信道使用目的不是通信的机制。例如&#xff0c;写和检查文…

NFA和DFA的区别

NFADFA初始状态不唯一唯一弧上的标记字(单字符字/ε)字符(串)转换关系非确定确定对于每个NFA M都存在一个DFA M 使得 L(M) L(M) 转载于:https://www.cnblogs.com/masterchd/p/11061281.html

spring学习(33):id和name

目录结构 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

线性回归与 logistic回归

线性回归 算法方程&#xff1a;hθ(x)∑i0nθixiθTxh_{\theta}(x)\sum_{i0}^{n} \theta_{i} x_{i}\theta^{T} xhθ​(x)∑i0n​θi​xi​θTx 损失函数&#xff1a;J(θ0,θ1,…,θn)12m∑i1m(hθ(x(i))−y(i))2J\left(\theta_{0}, \theta_{1}, \ldots, \theta_{n}\right)\f…

[高效时间管理] 番茄工作钟 windows版本

【背景】 2019年本人学会了记录每日时间&#xff08;将每日分割成半小时一段的时间&#xff09; &#xff0c;但似乎是为了完成而完成&#xff0c;效果不佳&#xff0c;手机端的番茄钟总是诱惑太多&#xff0c;就在准备tb计时器的时候&#xff0c;发现了宝藏软件。 个人整理知…

IDEA设置取消自动显示参数提示

IDEA设置取消自动显示参数提示 最近在使用IDEA的过程中&#xff0c;发现方法中一直显示形参名的提示&#xff0c;无法选中&#xff0c;也无法删除&#xff0c;基于不同人的使用习惯不同&#xff0c;有的人不喜欢这种提示&#xff0c;我也在网上寻找各种解决方案&#xff0c;由于…