2013蓝桥杯预选:第39阶台阶

来源:互联网 发布:mac一般用什么办公软件 编辑:程序博客网 时间:2024/05/20 08:44

题目描述

题目标题: 第39级台阶
    小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
    站在台阶前,他突然又想着一个问题:
    如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
    请你利用计算机的优势,帮助小明寻找答案。

要求提交的是一个整数。
注意:不要提交解答过程,或其它的辅助说明文字

方法1:模拟左右脚上台阶的情况

#include <iostream>#include <stdio.h>using namespace std;int main(){    int f[2][40];  //0 左脚  1右脚    f[0][0]=0;    f[0][1]=1;    f[1][0]=1;    f[1][1]=0;    for (int i=2; i<=39; i++)    {        f[0][i]=f[1][i-1]+f[1][i-2];        f[1][i]=f[0][i-1]+f[0][i-2];    }    cout<<f[1][39]<<endl;    return 0;}

方法二:递归搜索

#include <iostream>#include <stdio.h>using namespace std;long  ans=0;void  dfs(int step,int n){    if(n<0)    {        return;    }    else if(step%2==0 && n==0)    //第一步是左脚,所以左脚是奇数步,右脚是偶数步    {        ans++;        return;    }    dfs(step+1, n-1);  //走了一台阶    dfs(step+1, n-2);  //走了两台阶}int main(){    dfs(0,39);    cout<<ans<<endl;    return 0;}



0 0