[leetcode]_Unique Paths
题目:有一个m * n 的方格,如下图,一个小robot希望从左上角走到右下角,共有多少种不同的路线走法。

思路:
我的错误思路:全排列,从(0,0)走到(m - 1,n - 1)共需要往下走m-1步,往右走n-1步。那么计算公式就是(全排列(m-1+n-1)/(全排列(m-1)*全排列(n-1)))。想到这里我很happy的把全排列写好,submit, runtimeError。后面检测出是数值溢出了,即使使用long型数据接收全排列结果也会溢出。当然Java提供了BigInteger类帮助大数据的处理,但是这道理显然不是考察这个考点。故没有尝试BigInteger。
求助网络。第一道DP题,非常开心,当然我没有想出来,终于开始DP了。

对于任意一个目标点(假设到达这个点的路径有path_red条),如上图红框处,到达这个点都只有两条路,要么从上面的黑箭头下来(path_top),要么从左面的黑箭头过去(path_left),则可得到一个等式 path_red = path_top + path_left。核心公式就这个。
代码:
1、用最直观的回溯法:
int uniquePathsBackTrack(int m, int n) {
if(m==1 || n==1) return 1;
return uniquePaths(m-1, n) + uniquePaths(m, n-1);
}
这个会超时,我对回溯法不了解,不明白为什么会超时。
2、最标准的DP,没有丝毫的改进。AC了。
public int uniquePaths(int m, int n) {
if(m == 1 || n == 1) return 1;
int[][] path = new int[m][n];
for(int i = 0 ; i < m ; i++) path[i][0] = 1;
for(int j = 0 ; j < n ; j++) path[0][j] = 1;
for(int i = 1 ; i < m ; i++){
for(int j = 1 ; j < n ; j++){
path[i][j] = path[i][j-1] + path[i-1][j];
}
}
return path[m - 1][n - 1];
}
还有很多对这个DP代码进行改进的,此处先放下,现在的理解不适合对DP过多纠缠。自由再回来复习的时候。
[leetcode]_Unique Paths的更多相关文章
- LeetCode: Unique Paths II 解题报告
Unique Paths II Total Accepted: 31019 Total Submissions: 110866My Submissions Question Solution Fol ...
- leetcode先刷_Unique Paths II
那么上述问题,假设这个矩阵堵塞障碍,不能在若干组合前面所用的方法,因为这么多的位置实际上是没有办法的事儿. 还有剩下的唯一合理的解决方案dp该.与最低要求,并且等,从右下角以前突起,对于位置(i, j ...
- leetcode第一刷_Unique Paths
从左上到右下,仅仅能向右或向下,问一共同拥有多少种走法. 这个问题当然能够用递归和dp来做,递归的问题是非常可能会超时,dp的问题是须要额外空间. 事实上没有其它限制条件的话,这个问题有个非常easy ...
- [LeetCode] Unique Paths II 不同的路径之二
Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...
- [LeetCode] Unique Paths 不同的路径
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...
- LeetCode: Unique Paths I & II & Minimum Path Sum
Title: https://leetcode.com/problems/unique-paths/ A robot is located at the top-left corner of a m ...
- [LeetCode] All Paths From Source to Target 从起点到目标点到所有路径
Given a directed, acyclic graph of N nodes. Find all possible paths from node 0 to node N-1, and re ...
- [leetcode]Unique Paths II @ Python
原题地址:https://oj.leetcode.com/problems/unique-paths-ii/ 题意: Follow up for "Unique Paths": N ...
- [leetcode]Unique Paths @ Python
原题地址:https://oj.leetcode.com/problems/unique-paths/ 题意: A robot is located at the top-left corner of ...
随机推荐
- Java中数字操作
public static void main(String[] args) throws Exception { { //Math函数的四舍五入,注意负数的时候小数位<=0.5都会被舍去,&g ...
- Esfog_UnityShader教程_漫反射DiffuseReflection
这篇是系列教程的第三篇,最近工作比较紧,所以这个周六周日就自觉去加了刚回来就打开电脑补上这篇,这个系列的教程我会尽量至少保证一周写一篇的.如果大家看过我的上一篇教程<Esfog_UnitySha ...
- Fegla and the Bed Bugs 二分
Fegla and the Bed Bugs Fegla, also known as mmaw, is coaching a lot of teams. All these teams train ...
- 制作chm无搜索标签解决方法
chm无搜索标签解决方法: 1.hpp文件中设置Full-text search=Yes 2.下面[windows]有个数字设置为0x420, 网上普通流传的是0x20 === chm制作一般要三个文 ...
- Java将Unix时间戳转换成指定格式日期
public String TimeStamp2Date(String timestampString, String formats){ Long timestamp = Long.pars ...
- Fiddler录制jmeter脚本,干货分享
我们知道以前jmeter的脚本来源有三个,手动书写.badboy录制.自带的录制功能(jmeter3.0该功能还比较好),目前我们又多了一个fiddler生成,自上次分享出来fiddler ...
- (续篇3):飞测独家のJmeter秘籍,限量发放
好东西,分享大家,自上次分享出来fiddler导出jmx格式V4.0版本对外公开后,收到一些反馈,我们利用工作之余时间继续优化,现在一个比较稳定的版本出炉,分享给大伙,我们一起来看看. 特性说明: 版 ...
- DAY13 Matlab实现图像错切源代码
Matlab实现图像错切源代码 %错切im=(imread('robot.jpg'));im1=rgb2gray(im);figure,imshow(im1);[row,col]=size(im1); ...
- Java垃圾收集器之--Garbage-First Collector
简介 Garbage-First(G1)垃圾收集器全面支持JDK7 Upate 4及后续版本.G1收集器是一个服务器形式(server-style)的垃圾收集器,主要用于内存大.多处理器的 ...
- 【PL/SQL练习】游标cursor :oracle 在执行sql语句时,为sql语句所分配的一个私有的内存区域
隐式游标:一次只能返回一行结果(不需要定义,默认自动建立) 显式游标: 需要开发人员提前定义,可以通过循环的方式处理游标里的sql语句,返回多行结果 隐式游标的属性: sql%rowcou ...