20天拿下华为OD笔试之【DP】2023Q1A-猴子爬山【闭着眼睛学数理化】全网注释最详细分类最全的华为OD真题题解

2023-11-17

【DP】2023Q1A-猴子爬山

题目描述与示例

题目

一天一只顽猴想要从山脚爬到山顶,途中经过一个有 n 个台阶的阶梯,但是这个猴子有个习惯,每一次只跳 1 步或 3 步。试问猴子通过这个阶梯有多少种不同的跳跃方式。

输入

输入只有一个数 n0 <= n <= 50,代表此阶梯有多个台阶。

输出描述

一个整数,表示有多少种跳跃方式。

示例一

输入

50

输出

122106097

示例二

输入

3

输出

2

解题思路

注意:本题和 LC70. 爬楼梯几乎完全一致。唯一区别在于,猴子更加调皮,每次是跳 13 个台阶,而不是 12 个台阶。

这是一个典型的 dp 问题。我们考虑动态规划三部曲:

  1. dp 数组的含义是什么?
  • dp 数组是一个长度为 n+1 的一维列表,dp[i] 表示猴子到达第 i 个台阶一共有多少种跳跃方式。
  1. 动态转移方程是什么?
  • 跳跃到第 i 个台阶的方法数 dp[i],等于到达其前一个台阶的方法数 dp[i-1],加上到达其前三个台阶的方法数 dp[i-3] 之和。即存在
dp[i] = dp[i-1] + dp[i-3]
  1. dp 数组如何初始化?
  • 0 个台阶,即起点位置,猴子只有 1 种方法能够到达
  • 1 个台阶,猴子只能从起点位置跳上来,只有 1 种方法能够到达
  • 2 个台阶,猴子只能从第 1 个台阶跳上来,只有 1 种方法能够到达
# 第0,1,2个台阶均只有1种跳跃方式到达
dp[0] = 1
dp[1] = 1
dp[2] = 1

考虑完上述问题后,代码其实呼之欲出了。

代码

# 题目:2023Q1A-猴子爬山
# 分值:100
# 作者:许老师:闭着眼睛学数理化
# 算法:动态规划(序列dp)
# 代码看不懂的地方,请直接在群上提问

n = int(input())

# 初始化dp数组
# dp[i]表示到达第i个台阶一共有多少种跳跃方式
dp = [0] * (n+1)
# 第0,1,2个台阶均只有1种跳跃方式到达
dp[0] = 1
dp[1] = 1
dp[2] = 1

# 从第3个台阶开始,遍历剩余的所有台阶i,
# 跳跃到每一个台阶的方法数,
# 等于到达其前一个台阶的方法数dp[i-1]
# 加上到达其前三个台阶的方法数dp[i-3]之和
for i in range(3, n+1):
    dp[i] = dp[i-1] + dp[i-3]

# 输出第n个台阶的方法数
print(dp[n])

时空复杂度

时间复杂度:O(N)。对每一个台阶都要计算到达该台阶的方法数。

空间复杂度:O(N)。dp 数组所占据的空间。

华为OD算法冲刺训练

  • 华为OD算法冲刺训练目前开始常态化报名!目前已服务100+同学成功上岸!

  • 课程讲师为全网50w+粉丝编程博主@吴师兄学算法 以及小红书头部编程博主@闭着眼睛学数理化

  • 每期人数维持在20人内,保证能够最大限度地满足到每一个同学的需求,达到和1v1同样的学习效果!

  • 30+天陪伴式学习,20+直播课时,300+动画图解视频,200+LeetCode经典题,100+华为OD真题,还有简历修改与模拟面试将为你解锁

  • 可查看链接 OD算法冲刺训练课程表 & OD真题汇总(持续更新)

  • 绿色聊天软件戳 sheepvipvip了解更多

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

20天拿下华为OD笔试之【DP】2023Q1A-猴子爬山【闭着眼睛学数理化】全网注释最详细分类最全的华为OD真题题解 的相关文章

  • 【华为OD统一考试A卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • 华为OD机试真题-素数之积-2023年OD统一考试(C卷)

    题目描述 RSA加密算法在网络安全世界中无处不在 它利用了极大整数因数分解的困难度 数据越大 安全系数越高 给定一个32位正整数 请对其进行因数分解 找出是哪两个素数的乘积 输入描述 一个正整数num 0 lt num lt 2147483
  • 【华为OD机考 统一考试机试C卷】素数之积/RSA加密算法(C++ Java JavaScript Python)

    华为OD机考 统一考试 C卷 D卷 B卷 A卷 2023年11月份 华为官方已经将 华为OD机考 OD统一考试 A卷 B卷 切换到 OD统一考试 C卷 和 OD统一考试 D卷 根据考友反馈 目前抽到的试卷为B卷或C卷 D卷 其中C卷居多 按
  • 【华为OD机考 统一考试机试C卷】掌握单词个数(C++ Java JavaScript Python)

    华为OD机考 统一考试 C卷 D卷 B卷 A卷 2023年11月份 华为官方已经将 华为OD机考 OD统一考试 A卷 B卷 切换到 OD统一考试 C卷 和 OD统一考试 D卷 根据考友反馈 目前抽到的试卷为B卷或C卷 D卷 其中C卷居多 按
  • 华为OD机试真题-火星文计算-2023年OD统一考试(C卷)

    题目描述 已知火星人使用的运算符为 其与地球人的等价公式如下 x y 4 x 3 y 2 x y 2 x y 3 1 其中x y是无符号整数 2 地球人公式按C语言规则计算 3 火星人公式中 的优先级高于 相同的运算符 按从左到右的顺序计算
  • 华为OD机试真题-符号运算-2023年OD统一考试(C卷)

    题目描述 给定一个表达式 求其分数计算结果 表达式的限制如下 1 所有的输入数字皆为正整数 包括0 2 仅支持四则运算 和括号 3 结果为整数或分数 分数必须化为最简格式 比如6 3 4 7 8 90 7 4 除数可能为0 如果遇到这种情况
  • 华为OD机试真题-游戏分组-2023年OD统一考试(C卷)

    题目描述 部门准备举办一场王者荣耀表演赛 有10名游戏爱好者参与 分为两队 每队5人 每位参与者都有一个评分 代表着他的游戏水平 为了表演赛尽可能精彩 我们需要把10名参赛者分为实力尽量相近的两队 一队的实力可以表示为这一队5名队员的评分总
  • 华为OD机试真题-找朋友-2023年OD统一考试(C卷)

    题目描述 在学校中 N个小朋友站成一队 第i个小朋友的身高为height i 第i个小朋友可以看到的第一个比自己身高更高的小朋友j 那么j是i的好朋友 要求j gt i 请重新生成一个列表 对应位置的输出是每个小朋友的好朋友位置 如果没有看
  • 华为OD机试真题-测试用例执行计划-2023年OD统一考试(C卷)

    题目描述 某个产品当前迭代周期内有N个特性 F1 F2 FN 需要进行覆盖测试 每个特性都被评估了对应的优先级 特性使用其ID作为下标进行标识 设计了M个测试用例 T1 T2 TM 每个用例对应了一个覆盖特性的集合 测试用例使用其ID作为下
  • 华为OD机试真题-考古学家-2023年OD统一考试(C卷)

    题目描述 有一个考古学家发现一个石碑 但是很可惜 发现时其已经断成多段 原地发现n个断口整齐的石碑碎片 为了破解石碑内容 考古学家希望有程序能帮忙计算复原后的石碑文字组合数 你能帮忙吗 输入描述 第一行输入n n表示石碑碎片的个数 第二行依
  • 华为OD机试真题-英文输入法-2023年OD统一考试(C卷)

    题目描述 主管期望你来实现英文输入法单词联想功能 需求如下 依据用户输入的单词前缀 从已输入的英文语句中联想出用户想输入的单词 按字典序输出联想到的单词序列 如果联想不到 请输出用户输入的单词前缀 注意 1 英文单词联想时 区分大小写 2
  • 华为OD机试 Python 【最大载货量】

    描述 在火车站旁的货运站 小明负责调度2K辆中转车 其中K辆用于干货 K辆用于湿货 每批到站的货物来自不同的供货商 需要按照顺序装入中转车 注意 一个供货商的货物只能装在一辆车上 不能分开 但是 一辆车可以放多个供货商的货物 问题是 要让所
  • 华为OD机试 C++【最大载货量】

    描述 在火车站旁的货运站 小明负责调度2K辆中转车 其中K辆用于干货 K辆用于湿货 每批到站的货物来自不同的供货商 需要按照顺序装入中转车 注意 一个供货商的货物只能装在一辆车上 不能分开 但是 一辆车可以放多个供货商的货物 问题是 要让所
  • 【华为机试真题 Python】简单的自动曝光、平均像素值

    题目描述 一个图像有n个像素点 存储在一个长度为n的数组img里 每个像素点的取值范围 0 255 的正整数 请你给图像每个像素点值加上一个整数k 可以是负数 得到新图newImg 使得新图newImg的所有像素平均值最接近中位值128 请
  • 【华为机试真题 Python】开放日活动、取出尽量少的球

    题目描述 某部门开展Family Day开放日活动 其中有个从桶里取球的游戏 游戏规则如下 有N个容量一样的小桶等距排开 且每个小桶都默认装了数量不等的小球 每个小桶装的小球数量记录在数组 bucketBallNums 中 游戏开始时 要求
  • 华为OD机试真题-反射计数-2023年OD统一考试(C卷)

    题目描述 给定一个包含 0 和 1 的二维矩阵 给定一个初始位置和速度 一个物体从给定的初始位置触发 在给定的速度下进行移动 遇到矩阵的边缘则发生镜面反射 无论物体经过 0 还是 1 都不影响其速度 请计算并给出经过 t 时间单位后 物体经
  • 2024年华为OD机试真题-小明找位置-Java-OD统一考试(C卷)

    题目描述 小朋友出操 按学号从小到大排成一列 小明来迟了 请你给小明出个主意 让他尽快找到他应该排的位置 算法复杂度要求不高于nLog n 学号为整数类型 队列规模 lt 10000 输入描述 1 第一行 输入已排成队列的小朋友的学号 正整
  • 华为OD机试真题-堆内存申请-2023年OD统一考试(C卷)

    题目描述 有一个总空间为100字节的堆 现要从中新申请一块内存 内存分配原则为优先紧接着前一块已使用内存分配空间足够且最接近申请大小的空闲内存 输入描述 输入 第1行是1个整数 表示期望申请的内存字节数 第2到N行是用空格分割的两个整数 表
  • 华为OD机试 Java 【计算文件大小】

    题目 一个电脑文件夹系统 每个文件夹里都有一些文件和可能还有其他子文件夹 给定所有文件夹的大小和子文件夹列表 你的任务是找出某一个文件夹及其所有子文件夹里的文件总大小 输入格式 首行有两个数字 文件夹的总数M和你要查询的文件夹ID N 之后
  • 华为OD机试真题-分披萨-2023年OD统一考试(C卷)

    题目描述 吃货 和 馋嘴 两人到披萨店点了一份铁盘 圆形 披萨 并嘱咐店员将披萨按放射状切成大小相同的偶数扇形小块 但是粗心服务员将披萨切成了每块大小都完全不同奇数块 且肉眼能分辨出大小 由于两人都想吃到最多的披萨 他们商量了一个他们认为公

随机推荐