题目:

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

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

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

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

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

答案:

51167078

分析:

思路1:递归

递归三部曲先走起:

1.确定递归函数的参数和返回值(参数即状态变化量,返回值即达到要求的个数)

2.确定递归终止条件(就是我走到这已经知道了这条支路的结果了就可以返回了)

3.确定单层循环的逻辑

写这个代码的时候我遇到了一个问题:当我将surplus<0换成surplus==-1时结果出错了,按理来说也是对的啊,这里就需要注意一下了,当有符号整数和无符号整数进行比较时,编译器会将有符号整数换成无符号整数,而且当有符号整数恰好是个负数时会被换成无符号类型的最大值,所以如果遇到要与负数比较,和0比较就可以啦!

代码:

​
#include<iostream>
using namespace std;
//surplus是剩余台阶,step是已走的步数
int solve(int surplus,int step){//surplus到最后只有两种情况,surplus==0  或  surplus == -1, 两个都是结束递归条件 if(surplus<0){ return 0;}if(surplus==0 && step%2==0){//步数一定是个偶数return 1;}return solve(surplus-1,step+1)+solve(surplus-2,step+1);
}
int main(){cout << solve(39,0);return 0;
}​

思路2:dp动态规划(俗话说蓝桥杯大多数的题都可以被dp解决)

dp[n].odd:上到第n级台阶时步数是奇数的方案数

dp[n].even:上到第n级台阶时步数是偶数 的方案数

状态移动方程:第n级台阶一定是从n-1级或是n-2级台阶过来的

dp[n].odd = dp[n-1].even + dp[n-2].even

dp[n].even = dp[n-1].odd + dp[n-2].odd

代码:

#include<iostream>
using namespace std;
typedef struct odd_even{int odd;//记录步数为奇数的方案数 int even;//记录步数为偶数的方案数
}OE;
int main(){OE dp[40];//初始化 dp[1].odd = 1;dp[1].even = 0;dp[2].odd = 1;dp[2].even = 1;for(int i=3;i<=39;i++){dp[i].odd = dp[i-1].even + dp[i-2].even;dp[i].even = dp[i-1].odd + dp[i-2].odd;}cout << dp[39].even;return 0;
} 

蓝桥杯2013届C++B组省赛真题 第39级台阶相关推荐

  1. 蓝桥杯2016届C++B组省赛真题 最大比例

    题目: X星球的某个大奖赛设了M级奖励.每个级别的奖金是一个正整数. 并且,相邻的两个级别间的比例是个固定值. 也就是说:所有级别的奖金数构成了一个等比数列.比如: 16,24,36,54 其等比值为 ...

  2. 蓝桥杯2021届C++B组省赛真题 杨辉三角形

    分析: 1. 首先他要我们找第一次出现N的位置,我们可以发现杨辉三角是两边完全对称的,在右边出现的在左边一定先出现过,所以N只可能出现在左半边,我们将右半边删去 2. 这道题的数据规模特别大,那么我们 ...

  3. 蓝桥杯2019届C++B组省赛真题 等差数列

    题目: 数学老师给小明出了一道等差数列求和的题目.但是粗心的小明忘记了一部分的数列,只记得其中 N 个整数. 现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有几项? 输入格式 输 ...

  4. 蓝桥杯2015届C++B组省赛真题 三羊献瑞

    题目: 观察下面的加法算式: 祥 瑞 生 辉 + 三 羊 献 瑞 ------------------- 三 羊 生 瑞 气 (如果有对齐问题,可以参看[图1.jpg]) 其中,相同的汉字代表相同的数 ...

  5. 蓝桥杯 笔记整理【JavaB组省赛真题、约数、全排列模板、排列组合、等差等比求和公式、eclipse快捷键、集合、快速求a^n、进制转换(Integer、BigInteger)、动态数组Vector】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  6. 【蓝桥杯】Java开发A组省赛真题+详细解析

    1. 世纪末的星期 曾有邪教称1999年12月31日是世界末日.当然该谣言已经不攻自破.   还有人称今后的某个世纪末的12月31日,如果是星期一则会-   有趣的是,任何一个世纪末的年份的12月31 ...

  7. 【蓝桥杯Web】第十三届蓝桥杯(Web 应用开发)省赛真题

    前言 第十三届蓝桥杯全国软件和信息技术专业人才大赛(软件类)新开了Web应用开发比赛,本文介绍第十三届蓝桥杯Web应用开发的省赛题目以及解析. 文章目录 前言 一.水果拼盘 二.展开你的扇子 三.和手 ...

  8. 【蓝桥杯】 《3W字数总结》 蓝桥杯Java必备基础知识以及国赛真题解析

    本文会持续更新,如果对您有帮助的话可以点点关注,双击 本人2021年蓝桥杯C++B组国二,今年转战Java,并整理此文,希望能够对大家有所帮助,第一次写这么长的文章,可能有的地方写的不是很好,还请大家 ...

  9. 第十三届 蓝桥杯青少年创意编程 C++组 省赛

    第十三届蓝桥杯省赛(2022年4月17日)C++中级组题解 第十三届蓝桥杯省赛(2022年4月17日)C++中级组题解_金博欣的博客-CSDN博客 第十三届蓝桥杯青少组省赛C++中级组(0417)讲解 ...

  10. 历届蓝桥杯青少年Scratch编程选拔赛 STEMA评测比赛真题解析【持续更新 已更新至49题】

    历届蓝桥杯scratch选拔赛真题 第十届.十一届.十二届.十三届蓝桥杯选拔赛STEMA比赛真题解析 选拔赛真题49-购物程序 [蓝桥杯选拔赛真题48]Scratch购物程序 少儿编程scratch蓝 ...

最新文章

  1. 3 css 奖品出现弹出动画_【技术】nuxt中引入wow和animate.css 页面随滚动条出现动画...
  2. 软件工程-GoldPoint游戏
  3. WCF入门-项目间调用服务
  4. 提高抗打击能力_如果提高心理抗打击能力?
  5. 寒假集训日志(二)——最小生成树,拓扑排序,欧拉回路,连通路
  6. Cannot load 64-bit SWT libraries on 32-bit JVM 解决方法
  7. 【系统架构】VC 开发辅助工具大收集
  8. vant:修改van-nav-bar__title颜色——vant中nav-bar组件标题颜色
  9. jQuery 的 ajax 请求方法
  10. React中setState的怪异行为 ——setState没有即时生效
  11. 1. STM32学习 STM32综述
  12. 各行业容灾备份架构#容灾#,
  13. 【解决方法】浏览器网页界面显示未连接到互联网
  14. Java等额本息年化利率,转等本等息月利率
  15. [论文阅读] (20)USENIXSec21 DeepReflect:通过二进制重构发现恶意行为(恶意代码ROI分析经典)
  16. 新东方雅思词汇---6.2、重音在词根上,不在前后缀(名词除外)
  17. numpy.core._exceptions.MemoryError: Unable to allocate 167. MiB for an array with shape (2970, 2460,
  18. Python灰帽子——黑客与逆向工程师的Python编程之道
  19. 学习React第三篇:在React组件上设置属性(PropTypes)
  20. 全网详细解决:无法将 “xxx” 项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次

热门文章

  1. 25种让你精力充沛的方法
  2. python中close函数的用法_skft包 pythonpython close()是什么?python close()定义及用法详解...
  3. 启动计算机时听到嘀嘀声,笔记本电脑开机嘀嘀滴声音如何解决
  4. web python 取代js_web前端:JavaScript,只有你想不到
  5. 163邮箱登陆写信自动化脚本
  6. DEP(Data Execution Prevention) 数据执行保护
  7. 人民日报:密码,让百姓生活更安全
  8. java volatile理解
  9. Echarts 大数据可视化基本使用
  10. NanoDet代码逐行精读与修改(四)动态软标签分配:dynamic soft label assigner