Leetcode_62_Unique Paths
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/43404205
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).
The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked 'Finish' in the diagram below).
How many possible unique paths are there?

Above is a 3 x 7 grid. How many possible unique paths are there?
Note: m and n will be at most 100.
思路:
(1)题意为给定m行n列,求从第0行第0列走到第m行第n列的路径有多少条。
(2)对于本题,首先想到的是通过递归来实现,当行数为1或者列数为1时,路径只有一条;我们先从行开始,假设从第1行第1列元素开始,向右到达右下角,则可以看做是去除第一列后剩余行列对应路径,以函数f(m,n)表示路径条数,则有f(m,n)=f(1,n-1)+f(2,n-1),...,+f(n,n-1),而f(1,n)=f(m,1)=1,则通过递归即可得到答案,只是递归效率太低,Oj肯定会超时,所以,不能选用这种方法。
(3)考虑到m行n列正好对应一个二位数组,而我们发现f(1,n)=f(m,1)=1,所以,我们对整个二维数组进行拆分,假设拆分第一行,则第一行中任意位置作为终点对应的条数都为1,同理拆分第一列也是;这样,对应二维数组的第一行第一列的值就都为1了;假设数组为2*2,则我们发现到达右下角的路径数为f(2,2)=2=f(2,1)+f(1,2),正好为该位置对应上方和左方值之和;同理,当数组为3*3时,f(3,3)=6=f(3,2)+f(2,3)={f(3,1)+f(2,2)}+{f(1,3)+f{2,2}}={1+f(1,1)+f(1,1)}+{1+f(1,1)+f(1,1)}=6;同理,当数组为m*n时,f(m,n) = f(m-1,n)+f(m,n-1)=.......。所以,我们只需要对二维数组中每个位置遍历赋值即可得到最后的结果,详情见下方代码。
(4)希望本文对你有所帮助。
算法代码实现如下:
/**
* @liqq 递归算法能够实现 但是会超时 oj不通过
*/
public static int get(int row, int col){
if(row<=0 || col <=0) return 0;
if(row==1) return 1;
if(col==1) return 1;
int result = 0;
for (int i = 1; i <=row; i++) {
result+=get(i,col-1);
}
return result;
}
/**
* @author 二维数组实现
*/
public static int getResult(int m, int n){
int[][] arr = new int[m][n];
for (int i = 0; i < m; i++) {
arr[i][0]=1;
}
for (int i = 0; i < n; i++) {
arr[0][i]=1;
}
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
arr[i][j]=arr[i-1][j]+arr[i][j-1];
}
}
return arr[m-1][n-1];
}
Leetcode_62_Unique Paths的更多相关文章
- [LeetCode] Binary Tree Paths 二叉树路径
Given a binary tree, return all root-to-leaf paths. For example, given the following binary tree: 1 ...
- [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 : Binary Tree Paths
Given a binary tree, return all root-to-leaf paths. For example, given the following binary tree: 1 ...
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- LeetCode-62-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 II
Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...
- POJ 3177 Redundant Paths(边双连通的构造)
Redundant Paths Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13717 Accepted: 5824 ...
- soj 1015 Jill's Tour Paths 解题报告
题目描述: 1015. Jill's Tour Paths Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description Every ...
随机推荐
- Swift按照数组元素出现的次数及大小排序
要求如下: 1.已知一个数组,按照单个元素在数组中出现的次数作为重新排序的依据,个数多的排在前面 2.相同个数时候,元素值大的排前面 例子: [1, 2, 2, 3, 5, 5] 经过计算得到的结果是 ...
- Retrofit2.0+RxJava+Dragger2实现不一样的Android网络架构搭建
Tamic :csdn http://blog.csdn.net/sk719887916 众所周知,手机APP的核心就在于调用后台接口,展示相关信息,方便我们在手机上就能和外界交互.所以APP中网络框 ...
- CentOS6.7下安装MySQL
第一步:到MySQL官网上下载linux版本的MySQL rpm 安装包. 第二步: 将该压塑包解压后,有如下文件: 第三步:安装文件,我们需要安装的文件有 MySQL-server-5.6.26-1 ...
- 【伯乐在线】最值得阅读学习的 10 个 C 语言开源项目代码
原文出处: 平凡之路的博客 欢迎分享原创到伯乐头条 伯乐在线注:『阅读优秀代码是提高开发人员修为的一种捷径』http://t.cn/S4RGEz .之前@伯乐头条 曾发过一条微博:『C 语言进阶有 ...
- 创建银行API
DECLARE lc_output VARCHAR2(3000); lc_msg_dummy VARCHAR2(3000); lc_return_status VARCHAR2(3000); lc_m ...
- 创建银行分行的API
DECLARE p_api_version NUMBER := 1.0; p_init_msg_list VARCHAR2(1) := 'F'; v_bank_id NUMBER := 530705; ...
- Hessian探究(一)Hessian与springMVC结合
上一篇博客Hessian探究(一)Hessian入门示例我们初步简单的介绍了一下Hessian的使用入门示例,我们是通过Servlet来暴露Hessian的对外服务的,接下来我们介绍一下通过Sprin ...
- 如何在Cocos2D游戏中实现A*寻路算法(六)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...
- Java中引用传递
//Java中的引用传递 class Ref1{ int temp = 10 ; String Str = "hello"; } public class HelloWorld { ...
- 最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)
===================================================== 最简单的基于FFmpeg的视频播放器系列文章列表: 100行代码实现最简单的基于FFMPEG ...