3:爬楼梯

描述:假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?

样例

比如n=31+1+1=1+2=2+1=3,共有3中不同的方法

返回 3

 

class Solution {

public:

/**

* @param n: An integer

* @return: An integer

*/

long climbStairs(int n) {

    // write your code here

    if(n==0)

        return 1;

    long  s = 1;

    int i=1;

    int j=n-i;

    while(i<=j){

        s=s+(getCni(j,i)+0.1);

        i++;

        j=n-i;

    }

    return s;

}

long  getCni( long n,  long i){

    long  s = 1;

    for (int j = 0; j<i; j++ ){

        s = s*( n - j )/(j+1);

    }

    return s ;

    }

};

posted on 2017-03-08 20:31  kyoxy  阅读(66)  评论(0编辑  收藏  举报