跳台阶的排列组合解法

跳台阶

http://www.nowcoder.com/questionTerminal/8c82a5b80378478f9484d87d1c5f12a4

从排列组合的角度考虑,把跳2阶当作黑球,跳1阶当作白球。问题就转化为,可以用多少个黑球以及黑球和白球的排列方法有几种。需要注意的是,用int会发生 浮点错误。

class Solution {
public:
    int jumpFloor(int number) {
        double sum = 0;
        int one;
        for(int two = 0; two <= number/2; two++){
            one = number - two * 2;
            sum += 1.0* factorial(one+two)/(factorial(one) * factorial(two));
        }
        return sum;
    }
    double factorial(int n){
        double r = 1;
        for(int i = 1; i <= n; i++)
            r *= i;
        return r;
    }
};
全部评论

相关推荐

我:“加班需要有加班工资。”&nbsp;hr:“为什么?”&nbsp;哈哈哈哈哈哈哈离大谱
juntenor:你确实太理想化了,对社会不了解呀。这个和HR没有关系,这是国内特色,不然怎么还会有外包就这种逆天的存在呢。
点赞 评论 收藏
分享
粗心的熊熊求求offer:什么内容都没有还弄两页
点赞 评论 收藏
分享
仁者伍敌:牛子这些人还会点一个自动回复,boss都不带回复的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务