[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,一经查实,立即删除!

相关文章

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

深度学习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;一般来…

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…

leetcode——背包问题汇总

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

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…

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…

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

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

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

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

spring学习(34):构造函数依赖注入

目录结构 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…

[高效时间管理]复盘篇

【背景】 2019年本人在公众号中阅读了《时间管理&#xff0c;这篇就够了》&#xff0c;学习了其中的内容并开始记录每日所做&#xff0c;偶尔晚上进行复盘&#xff0c;对督促学习和反思起到一定的作用&#xff0c;故向大家分享经验。 为什么要时间管理&#xff1f; 时间管理…

spring学习(35):c名称空间注入

目录结构 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…

spring学习(36):注入简单类型

目录结构 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…

spring学习(37):注入list类型

目录结构 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…

spring学习(38):注入set类型

目录结构 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…

spring学习(39):注入map类型

目录结构 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…

NanUI文档 - 如何实现C#与Javascript的相互通信

NanUI文档目录 NanUI简介开始使用NanUI打包并使用内嵌式的HTML/CSS/JS资源使用网页来设计整个窗口如何实现C#与Javascript的相互通信如何处理NanUI中的下载过程 - DonwloadHandler的使用(待更新。。。)如何处理NanUI中的弹窗过程 - LifeSpanHandler的使用(待更新。。。)如何控制…

spring学习(40):注入数组类型

目录结构 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…