上楼梯

题目描述

有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶、3阶。请实现一个方法,计算小孩有多少种上楼的方式。为了防止溢出,请将结果Mod 1000000007

给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100000。

测试样例:
1
返回:1
class GoUpstairs {
public:
    int countWays(int n) {
        // write code here
        int a[100000]; 
        for(int i=0;i<=100000;i++) 
            a[i]=0; 
        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]; 
    }
};

 

posted on 2017-04-20 21:35  123_123  阅读(111)  评论(0编辑  收藏  举报