跳台阶的排列组合解法
跳台阶
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; } };