题目:
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.
分析与解答:典型的DP题目,但这个题可以偷懒。不管怎么走,总共走到终点需要m+n-2步。其中向下m-1步,向右n-1步所以总共的可能性是C(m-1/n-1)。直接计算这个结果即可。注意int类型相乘可能溢出的问题。
class Solution {
public:
int uniquePaths(int m, int n) {
m--;n--;
int index = m<n?m:n,sum = m+n,b = index;
long up = sum,down = index;
if(index == 0)
return 1;
for(int i = 1; i < index;++i){
up *= --sum;
}
for(int i = 1;i < index;++i){
down *= --b;
}
return up/down;
}
};