Leetcode每日一题(Unique Paths)

A robot is located at the top-left corner of amxngrid (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:mandnwill be at most 100.

题目如上,翻译一下就是要找到所有的路径,这种问题是一个比较简单的问题,当然可以使用动态规划,也就是记录新矩阵的每个节点的数字等于到哪一个位置的路径之和再往下走,所以最后一个点的数值就是到达该点的路径和,也就是我们最终要求的数值。

假设原矩阵为m*n

那么新矩阵result:

result[0][0]=1;

result[0][j] = 1;

result[i][0] = 1;

result[i][j] = result[i][j-1]+result[i-1][j];

这样就会发现:

假如是一个5*5的矩阵“

1       1       1        1       1

1       2        3       4        5 

1       3         6       10      15

1       4         10      20      35

1       10       20       40      75


这样发现特别像杨辉三角(本人数学太差-也不懂其中的奥秘)

总之,我们还可以以另外一种方式计算,那就是数学方法:

相当于从最左端到最右下角-我们需要向右走(n-1)步向下走(m-1)步

那么,我们只需要在(m+n-2)步中选出向右走的或者向下走的步数就可以了:

因此很简单的数学公式了!

但是最简单的数学公式如果暴力求解不是很乐观,因此还是结合最开始的动态规划,这种动态规划实际上就是一种组合数


所以分析到现在发现竟然是一样的:

实现方法:


Leetcode每日一题(Unique Paths)_第1张图片

这是最简单的一种了,参考下面的链接可以得到计算组合数更好的方法了。


http://my.oschina.net/baoer1024/blog/62826

你可能感兴趣的:(Leetcode每日一题(Unique Paths))