`
zyn010101
  • 浏览: 325694 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

走台阶问题(转)

 
阅读更多

一个楼梯有50个台阶,每一步可以走一个台阶,也可以走两个台阶,请问走完这个楼梯共有多少种方法?

举个例子,假设有3个台阶,则有三种走法:分别是,1-1-1, 1-2, 2-1。

分析

很简单的一道题,学过组合数学的人很快就能想到,这是一个递推关系。假设走完k个台阶有f(k)种走法。

  • k = 1时,f(k) = 1
  • k = 2时,f(k) = 2
  • k = n时,第一步走一个台阶,剩n-1个台阶,有f(n - 1)种走法。第一步走两个台阶,剩n-2个台阶,有f(n - 2)种走法。所以共有f(n - 1) + f(n - 2)种走法。

于是有如下公式

代码

int count(unsigned int n)
{
    if(n == 1)
        return 1 ;
    if(n == 2)
        return 2 ;
    else 
        return count(n - 1) + count(n - 2) ;
}

具体是怎么走的呢?

上面只给出了有多少种走法,那么具体每一种走法是怎么走的呢?比如n=4时,五种走法分别如下:

1,1,1,1

1,1,2

1,2,1

2,1,1

2,2

我们用一个整型数组来存放每一步的内容,1表示这步走了一个台阶,2表示这步走了两个台阶。回溯法搞定。代码如下。

void count(int n, int t)
{
    if(n < 0)
        return ;
    if (n == 0)
        Output(step, t) ;
    else
    {
        for (int i = 1; i <= 2; ++i)
        {
            step[t] = i ;
            count(n - i, t + 1) ;
        }
    }
}

类似的问题

与此题类似的问题有很多,比如铺地砖问题,自然数拆分等。

铺地砖问题

有一个长度为n,宽度为2的地面,有若干块长为2,宽为1的地砖,请问用此地砖铺完这个地面共有多少种方法?

分析一下,假设铺完长度为n的地面有f(n)种方法,如果第一块地砖竖起来铺,还剩下长度为n-1的地面,有f(n-1)种方法。如下图。

如果第一块地转横着铺,那么还剩下长度为n-2的地面,有f(n-2)种铺法。如下图。

所以这道题与上面的题解法完全一样。不同的题目,相同的模型而已。

自然数拆分

给定一个自然数n,将其拆分为若干个自然数字之和,请问有多少种方法?举个例子,n=4时,可以拆分为1-1-1-1,1-1-2,1-3,2-2。

这题和上面的题很像,不过上面的问题是排列问题,而这题是组合问题,比如n=4时,1-1-2,1-2-1,2-1-1这三种只能算一个拆分。在上面的基础上,去掉重复的组合即可。

 

 

作者:zdd
分享到:
评论

相关推荐

    走台阶演示工具

    【走台阶演示工具】是一款专为帮助用户提升想象力和理解走台阶过程而设计的应用程序。在现实生活中,走台阶是一项常见的活动,但对于某些人来说,理解这个动作的顺序和细节可能会有困难,尤其是在进行体育训练、康复...

    排列组合问题的转化方法.doc

    例如,10 级台阶用 8 步走完,可以看成是每步走 1, 2 或 3 级的组合。 练习解答: - 对于甲、乙两队的围棋擂台赛,可以看成是树形结构问题,每一场比赛对应树的一层,最终胜利者有多种路径,计算所有可能的树结构...

    排列组合问题的转化方法[精选].doc

    如10级台阶用8步走完,可以构建每步走1、2或3级的模型,利用动态规划或者递推关系解决。这个问题可以用阶乘和二项式系数组合得出答案。 练习: 比赛过程问题可以转化为树形结构,甲乙两队的每个队员都可以看作是...

    三年级数学上册 5.5 数学广场——植树问题课件 沪教版 课件.ppt

    首先,课件通过一个生活情境引入问题:小明从一楼到三楼需要走两层楼梯,每层有16个台阶,所以总台阶数为 \(16 \times 2 = 32\) 个。这个例子帮助学生理解基本的乘法运算。 接着,我们进入了探究环节。探究一讨论的...

    你必须知道的495个C语言问题(完整版本)

    无论你是一位刚开始接触C语言的新手,还是已经拥有丰富经验的开发者,深化对这些陷阱的理解和避免策略,都将使你的编程技能迈上一个新的台阶。在技术迅速发展的今天,对C语言有深刻理解的程序员无疑将拥有更大的竞争...

    程序员面试之无敌天书

    - **问题描述**:一个台阶总共有n级,如果每次可以上1级或2级台阶,问有多少种不同的走法。 - **解决方案**:这是一个典型的动态规划问题,可以发现每种走法的数量和斐波那契数列有关。设`f(n)`为到达第n级台阶的...

    剑指offer题解(C++).docx

    13. **链表中倒数第k个节点**:双指针法是解决此类问题的常用手段,其中一个指针先走k步,然后两个指针同时移动。 14. **反转链表**:链表的翻转操作,可以使用迭代或递归方法实现。 15. **合并两个排序的链表**:...

    部编版第5讲 锯木头.doc

    这种问题要求我们计算从底楼到指定楼层的总台阶数。例如,从底楼到5楼,实际上需要走过4层楼梯,每层楼梯有20级台阶,那么总共就是80级台阶。这种问题的解决方法也完全遵循了前面提到的规律。 总体来说,部编版第5...

    递 推 算 法 的 资 料

    同样以台阶问题为例,倒推是先考虑已经到达n-1阶或n-2阶的情况,然后分别加上一步或两步到达n阶,得出f(n)=f(n-1)+f(n-2)。 二、递推算法实例 这里给出了几种不同的递推算法实现方式: 1. 第一种递推实现通过循环...

    【2013版中考12年】江苏省苏州市2002-2013年中考数学试题分类解析 专题09 三角形

    江苏省苏州市的中考数学试题,历来以全面覆盖基础知识点和...因此,学生在学习这些知识的同时,应注重培养自己的逻辑推理能力和问题解决能力,这样才能在未来的学术道路上走得更远,解决更加复杂和高难度的数学问题。

    钢条切割问题leetcode-Basic_Algorithms:算法导论的python代码

    走台阶问题 计算回文字符串 字符串反转 字符串模式匹配 字符串前缀匹配 字典trie匹配 最大连续字符串 字符串压缩 最短路径和 路径总数 最长等差数列 组合硬币数量 最少完全平方数 组合总和 梯度下降算法演示 ...

    浙江省湖州市安吉县上墅私立高级中学2016_2017学年高二物理下学期第二次月考试题无答案2018062801192

    3. 对于翟志刚舱外活动的描述,"走得最快"是以飞船为参考系,因相对于飞船他的速度是最快的;"25 min 23 s"表示的是时间间隔,而不是时刻。 4. 苹果下落问题运用自由落体公式,可以通过速度计算下落高度,选择项B给...

    湖南省计算机二级试题下载

    4. **阶跃数**:爱因斯坦走台阶问题是一个典型的同余方程问题,可以通过模运算寻找规律。 5. **弦数**:弦数是指满足a^2 + b^2 = c^2的正整数,可以用暴力搜索法求解。 6. **条件筛选**:例如找特定条件下的数,如...

    基于单片机的步进电机加减速的控制方法.ppt

    本文旨在介绍基于单片机的步进电机加减速的控制方法,该方法可以解决步进电机快速加减速控制中常见的失步堵转噪声等问题。步进电机具有快速停能力强、粕度高、专速容易控制的特点,在工业过程控制及仪等领域中越来越...

    二年级数学上册 竞赛题(六)(无答案) 人教新课标版.doc

    2、第二题涉及到的是简单的乘法运算,小敏从底楼到六楼,要走5层楼,每层12级台阶,总共走5*12级台阶。 3、第三题考察年龄差的理解,10年后哥哥比弟弟大的岁数就是现在哥哥比弟弟大的岁数,即15-8。 4、第四题是一...

    递归函数大集成

    本问题要求计算从顶部到底部的不同走法数量,每次可以跳1、2或3个台阶。 **代码解析:** ```c #include #define N 5 // 台阶数 void Try(int n, int stack[], int *pp, int *psum) { int i; for (i = 1; i ; i++...

    2017年一年级数学下册期中考试题.doc

    - 通过楼梯问题(14级台阶走两层)训练学生的实际应用能力。 - 正方体木块的六个面的探索,培养学生的空间思维。 这些题目全面覆盖了一年级学生应掌握的基础数学知识,包括数的概念、运算规则、几何形状认知以及...

    《蚂蚁怎样走最近》PPT课件2

    例如,探险者在沙漠中的行进问题,以及蚂蚁在台阶上寻找最短路径的问题,都要求学生构建直角三角形,运用勾股定理求解。这些问题都要求学生能够灵活运用数学知识,解决实际问题。 在PPT课件的另一个例子里,我们...

    暑期预习2021五年级数学上册第七单元测试卷新人教版20210705158

    5. 上楼问题:老师走了72个台阶,每层24个,说明老师去了3层楼,选B。 四、解决问题: 1. 圆形水池摆盆景:100m的周长除以5m的间隔,得到20盆。 2. 四边形围圈游戏:学生总数减去4(角上的学生),再除以4(每边)...

    程序员代码面试指南-第四章递归和动态规划[牛客试网试读版]

    - **补充题目1**:给定整数N,代表台阶数,一次可以跨2个或1个台阶,返回有多少种走法。 - 这个问题实际上也是斐波那契数列的一个变形,其解法与斐波那契数列相似。 - 解答方法与斐波那契数列相同,可以通过递归、...

Global site tag (gtag.js) - Google Analytics