上楼梯,青蛙跳

题目描述
有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶、3阶。请实现一个方法,计算小孩有多少种上楼的方式。为了防止溢出,请将结果Mod 1000000007
给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100000。
测试样例:
1
返回:1

class GoUpstairs {
public:
    int countWays(int n) {
        int a[100000];
          a[1]=1;
          a[2]=2;
          a[3]=4;
      for(int i=4;i<=n;i++)
          a[i]=((a[i-1]+a[i-2])%1000000007+a[i-3])%1000000007;
      return a[n];
    }
};

你可能感兴趣的:(金典)