蓝桥杯第四届省赛第39级台阶

题目描述:

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

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

思路:既然要求必须走偶数步,则在走的时候把左脚右脚分别走一步作为走一次。

#include<stdio.h>

int left[4] = { 1,1,2,2 };
int right[4] = { 1,2,1,2 };//每次两步两步的走,左右脚搭配的方式
int sum = 0;
void dfs(int n) {
    //还剩多少节楼梯
    if (n == 0) {//恰好走完
        sum++;
        return;
    }
    if (n <= 1) {
        //剩一节或者这种走法已经走不通
        return;
    }
    int i;
    for (i = 0; i < 4; i++) {
        dfs(n - left[i] - right[i]);
    }
}

int main() {
    dfs(39);
    printf("%d", sum);
    return 0;
}

答案:51167078

posted @ 2018-03-30 17:43  Carol淋  阅读(154)  评论(0编辑  收藏  举报