算法教程2:39级台阶问题

原创 2015年11月20日 17:30:52

题意

小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!

站在台阶前,他突然又想着一个问题:

如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?

请你利用计算机的优势,帮助小明寻找答案。

思路

利用DFS进行深搜,用一个标志变量来记录左右脚的平衡,如果初始的flag为0,那么结束条件时结束的flag就为1,诸如此类

代码

// 39级台阶问题beta版
//各变量含义,count记录了最终的答案,为5000多万次
//pos记录了走的台阶数
//i记录了走了多少次
//两个递归的过程实际上也就是进行二叉树化的过程
#include <iostream>
using namespace std;
int count=0;
char a[50];
void fun(int i,int pos,int flag){
    if(pos>39) return ;
    if(pos==39 && flag==1){
        count++;
    }
    a[i] ='1';
    fun(i+1,pos+1,!flag);
    a[i]= '2';
    fun(i+1,pos+2,!flag);

}
int main(){
    fun(0,0,0);
    cout<<count;
}

补充说明:程序有点慢,得估计要跑10多秒才能跑出最终结果,请大家耐心等待

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

39级台阶问题

题目:第39级台阶 小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左...

青蛙跳台阶问题,常见面试算法题,斐波那契数列(Fibonacci Sequence)

一、一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。问题分析 设f(n)表示青蛙跳上n级台阶的跳法数。当只有一个台阶时, 即n = 1时, 只有1...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

【微软100题】一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级,求总共有多少总跳法,并分析算法的时间复杂度

一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级,求总共有多少总跳法,并分析算法的时间复杂度

算法习题27:跳台阶问题

题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。 求总共有多少总跳法,并分析算法的时间复杂度。 这道题最近经常出现,包括MicroStrategy等比较重视算法的公司都 曾先后选...
  • ylf13
  • ylf13
  • 2013-10-22 10:07
  • 523

上台阶、硬币问题的算法

问题 刚才在首页看到一篇博客,说的是腾讯的一道面试题:一个楼梯有50个台阶,每一步可以走一个台阶,也可以走两个台阶,请问走完这个楼梯共有多少种方法?博主把这题分析的很麻烦。引来很多人围观。我以前...

【算法题】:跳台阶问题及斐波那契Fibonacci序列

题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。 分析:如果只有1级台阶,那显然只有一种跳法。如果有2级台阶,那就有两种跳的方法了:一种是分两...

算法积累-跳台阶问题

算法积累-跳台阶问题题目一:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?解析:属于找规律的算法,设f(n)为跳n个台阶的跳法,从1开始找规律:f(1) =...

程序员算法冒险之旅(一)---青蛙跳台阶问题

目录: 青蛙跳台阶问题 问题描述 我的解决办法 效率更高的解决办法青蛙跳台阶问题今天在牛客网上看到一些算法问题,本人苦逼学生一枚,也学过了c,java,数据结构,算法。说实话,我的数据结构算法学得...

程序员算法冒险之旅(二)---变态跳台阶问题

变态跳台阶问题上次解决了青蛙跳台阶问题,这马上就是变态跳台阶问题。。。看了下题目,这只青蛙确实挺变态的,无论多长的台阶都可以直接跳过去。。。。问题描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级...

问题五十七: 楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,编程序计算共有多少种不同的走法?

/* 程序头部注释开始(为避免提交博文中遇到的问题,将用于表明注释的斜杠删除了) * 程序的版权和版本声明部分 * All rights reserved. * 文件名称...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)