Unique Paths(from leetcode
题意:
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?
分析:这道题可以用动态规划,或者排列组合的方式。排列组合方法比较有意思,机器人从左上角走到右下角,一定走了m个横着的和n个竖着的,那么问题只在于怎么走上,用排列组合很容易解出来,唯一的问题是会超时,所以需要直接化简排列组合的式子。
代码:
class Solution {
public:
int uniquePaths(int m, int n) {
int ma = max(m,n);
int ni = min(m,n);
long int a=1,b=1,c=1;
int i =0;
for(i=ma;i<=m+n-2;i++){
a *= i;
}
for(i = 1;i<=ni-1;i++){
b *= i;
}
if(b==0){
b=1;
}
return a/b;
}
};