上台阶(斐波那契数列)----京东2016研发工程师编程题(二)

来源:互联网 发布:ubuntu网卡驱动 编辑:程序博客网 时间:2024/06/04 17:45

[编程题] 上台阶

有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?注:规定从一级到一级有0种走法。

给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100。为了防止溢出,请返回结果Mod 1000000007的值。

测试样例:
3
返回:2
vec.push_back( 0 ) ;
上第 0 个台阶只有 0 种方法

vec.push_back( 0 ) ;
上第 1 个台阶只有 0 种方法

vec.push_back( 1 ) ;
上第 2 个台阶只有 1 种方法

vec.push_back( 2 ) ;
上第 3 个台阶只有 2 种方法

class GoUpstairs {public:    int countWays(int n) {        // write code here        vector<int> vec ;        vec.push_back( 0 ) ;        vec.push_back( 0 ) ;        vec.push_back( 1 ) ;        vec.push_back( 2 ) ;        for ( int i = 4; i <= n; ++ i ) {            vec.push_back( ( vec[i - 1] + vec[i - 2] ) % 1000000007 )  ;        }        return vec[n] ;    }};


第二次做:

class GoUpstairs {public:    int countWays(int n) {        // write code here        vector<int> vec ;        vec.push_back( 0 ) ;        vec.push_back( 0 ) ;        vec.push_back( 1 ) ;        vec.push_back( 2 ) ;                for ( int i = 4; i <= n; ++ i ) {            vec.push_back( ( vec[i - 1] + vec[i - 2] ) % 1000000007 ) ;        }                return vec[vec.size() - 1] ;    }};



0 0
原创粉丝点击