2020-05-07

作者: 零岁的我 | 来源:发表于2020-05-07 16:44 被阅读0次

题目描述:

小明在凌空SOHO上班,想通过爬楼梯的方式锻炼,他爬楼梯的方式有3种,一步跨一层、一步跨两层或一步跨3层,但是由于身体原因,在爬楼梯的锻炼中,一步跨三层的方式只能使用一次,请问爬到第k层楼梯时共有多少种方式?
输入:输入一个整型数,表示楼梯级数
输出:输出一个整型数,表达式爬到该级数的方式个数,若有任何异常则返回-1.

#include <iostream>
using namespace std;
int climbStair(int n) 
{
    if(n<=0){
        return 0;
    }
    if(n == 1){
        return 1;
    }
    if(n == 2){
        return 2;
    }
    if(n == 3){
        return 4;
    }
    int num1 = 1;
    int num2 = 2;
    int temp=0;
    for(int i = 3;i<=n;i++){
        int tmp = num1 + num2;
        num1 = num2;
        num2 = tmp;
        if(i == n-3){
            temp=tmp;
        }
    }
    int res=0;
    if(n-3 == 1) res=num2+1;
    if(n-3 == 2) res=num2+2;
    else res = num2 + temp;
    return res;
}
int main ()
{
    int k=0;
    cin>>k;
    if(k<0){
        cout<<-1<<endl;
        return -1;
    }
    int res = climbStair(k);
    cout<<res<<endl;
    return 0;
}

以上是帮做的,正确性没有使用足够的测试用例验证。

相关文章

网友评论

    本文标题:2020-05-07

    本文链接:https://www.haomeiwen.com/subject/udioghtx.html