蓝桥杯第四届省赛第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 @   Carol淋  阅读(161)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示