LeetCode: Unique Paths

来源:互联网 发布:淘宝店保证金能退吗 编辑:程序博客网 时间:2024/06/05 08:14

思路:本题只要写出组合式的计算函数就解决了问题,组合式子有以下关系:

C(n,k) = C(n-1,k) + C(n-1, k-1)

根据这个公式写出计算组合式的函数

后面的问题:

因为m*n个格子一共需要走 m + n - 2步,在其中选择 m -1 向右走,剩下的 n -1 步向下走,就到了目的地,所以结果就是C(m+n -2 , m -1)。

code:

class Solution {public:    int combinationValue(int m,int n){        int *temp = new int[m+1], *ret = new int [m+1];        temp[0] = temp[1] = ret[0] = ret[1] = 1;        for(int i = 2;i<=m;i++){            for(int j = 1;j<=m;j++){                if(j >= i)                    ret[j] = j > i? 0 : 1;                else                    ret[j] = temp[j] + temp[j-1];            }            ret[0] = 1;            for(int j=0;j<=m;j++)                temp[j] = ret[j];        }        return ret[n];    }    int uniquePaths(int m, int n) {        int ret = combinationValue(m+n-2,m-1);        return ret;    }};


0 0
原创粉丝点击