62. Unique Paths
来源:互联网 发布:淘宝上怎么看卖家地址 编辑:程序博客网 时间:2024/05/16 07:56
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.
因为机器人只能向右或者向下走,所以当前点可以到达finish的路径数等于右点和下点可以到达finish的路径和。以3*4为例,步数如下表: 63143211111填的时候从右下角开始,先写一,然后逐次填左和上,有点像扫雷的数字计算规则。根据这个思路,代码如下:public class Solution { public int uniquePaths(int m, int n) { if (m == 0 || n == 0) { return 0; } int[][] res = new int[m][n]; for (int i = 0; i < m; i ++) { res[i][n - 1] = 1; } for (int i = 0; i < n; i ++) { res[m - 1][i] = 1; } for (int i = m - 2; i >= 0; i --) { for (int j = n - 2; j >= 0; j --) { res[i][j] = res[i + 1][j] + res[i][j + 1]; } } return res[0][0]; }}还有另一种思路,按照排列组合的思想,总的要走的步数N是 m+n-2,需要向下走的步数K是 m-1,那么可能的选择有 C N K,一个公式搞定,代码如下:
class Solution { public: int uniquePaths(int m, int n) { int N = n + m - 2;// how much steps we need to do int k = m - 1; // number of steps that need to go down double res = 1; // here we calculate the total possible path number // Combination(N, k) = n! / (k!(n - k)!) // reduce the numerator and denominator and get // C = ( (n - k + 1) * (n - k + 2) * ... * n ) / k! for (int i = 1; i <= k; i++) res = res * (N - k + i) / i; return (int)res; } };}
0 0
- 62. Unique Paths && 63. Unique Paths II
- 62. Unique Paths \ 63. Unique Paths II
- [LeetCode]62.Unique Paths
- LeetCode --- 62. Unique Paths
- LeetCode 62.Unique Paths
- [Leetcode] 62. Unique Paths
- [leetcode] 62.Unique Paths
- 62. Unique Paths
- [leetcode] 62.Unique Paths
- leetcode 62. Unique Paths
- Leetcode 62. Unique Paths
- [leetcode] 62. Unique Paths
- 62. Unique Paths LeetCode
- 62. Unique Paths
- 62. Unique Paths
- [LeetCode]62. Unique Paths
- 【LeetCOde】62. Unique Paths
- [LeetCode]62. Unique Paths
- 最大连续子序列(HDU - 1231)
- Web前端
- 70.在Mac上打造方便好用的Python开发环境
- LCA
- 分布式消息队列RocketMQ--事务消息--解决分布式事务的最佳实践
- 62. Unique Paths
- 2.18.1成绩转换
- 动态规划LCS问题( HDU - 1159 Common Subsequence)
- [形象的解释神经网络激活函数的作用是什么?]
- ruby 进门小结
- 让人很容易误解的TCP拥塞控制算法
- Java基础--基本数据类型与包装类
- java系统高并发解决方案
- 326. Power of Three