当前位置: 首页 > news >正文

【华为机试】2023年真题B卷(python)-猴子爬山

一、题目

题目描述:

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

二、输入输出

输入描述:
输入只有一个整数N(0<N<=50)此阶梯有多少个台阶。
输出描述:
输出有多少种跳跃方式(解决方案数)。

三、示例

示例1:

输入输出示例仅供调试,后台判题数据一般不包含示例
输入:
50
输出:
122106097
示例2:

输入输出示例仅供调试,后台判题数据一般不包含示例
输入:
3
输出:
2

四、解题思路

这是一个经典的动态规划问题。我们可以使用动态规划的思想来解决这个问题。

首先,我们定义一个长度为N+1的数组dp,其中dp[i]表示通过i个台阶的跳跃方式的解决方案数。

然后,我们可以根据题目描述的规则,推导出状态转移方程:
dp[i] = dp[i-1] + dp[i-3]

解释一下这个状态转移方程的含义:

  • 当前位置i的解决方案数等于前一步位置i-1的解决方案数加上前一步位置i-3的解决方案数。
  • 这是因为,要到达当前位置i,可以从前一步位置i-1跳一步到达,也可以从前一步位置i-3跳三步到达。

接下来,我们可以使用动态规划的方法来计算解决方案数。我们从起始位置开始,逐步计算每个位置的解决方案数,直到达到目标位置N。

最后,返回目标位置N的解决方案数作为结果。

五、参考代码 

# -*- coding: utf-8 -*-
'''
@File    :   2023-B-猴子爬山.py
@Time    :   2023/12/29 19:30:20
@Author  :   mgc 
@Version :   1.0
@Desc    :   None
'''# import os
# import re
# import sys
# import copy
# import math
# import queue
# import functools
# from queue import Queue
# from collections import Counter, defaultdictdef count_jump_ways(N):if N <= 0:return 0# 定义动态规划数组dp = [0] * (N + 1)# 初始条件dp[0] = 1# 计算解决方案数for i in range(1, N + 1):dp[i] = dp[i - 1] + (dp[i - 3] if i >= 3 else 0)return dp[N]N = int(input())
result = count_jump_ways(N)
print(result)
http://www.lryc.cn/news/270912.html

相关文章:

  • 【Harmony OS - Stage应用模型】
  • Java 8 中的 Stream 轻松遍历树形结构!
  • Openwrt修改Dropbear ssh root密码
  • js 对象
  • 【SpringBoot】常用注解
  • 【模拟电路】软件Circuit JS
  • 从入门到精通,30天带你学会C++【第十天:猜数游戏】
  • 使用ASP.NET MiniAPI 调试未匹配请求路径
  • 数据结构: 位图
  • Nginx 反向代理负载均衡
  • SAP FIORI 初步了解
  • chrome浏览器记录不住网站登录状态,退出后再打开就需要重新登陆的解决办法
  • Linux lpd命令教程:打印服务管理技巧全解析(附实例教程和注意事项)
  • 利用STM32和可控硅控制220V加热电路
  • 在高并发场景下,缓存“雪崩”了怎么办
  • 本地git服务器的使用
  • Mybatis Java API - SqlSessionFactoryBuilder
  • 【动态规划】 LCR 099. 最小路径和
  • 【51单片机系列】DS18B20温度传感器扩展实验之设计一个智能温控系统
  • 2023年年度总结,一个小白的CSDN涨粉历程
  • 2023-12-17 LeetCode每日一题(使用最小花费爬楼梯)
  • 《Webpack5 升级》- Vue2.x 组件库 Webpack3 升 5
  • 【7K⭐】Pot:一款开源免费支持跨平台划词翻译和OCR的软件
  • navicat premium历史版本下载及更新navicat premium15 永久(使用)有效期
  • JAVA进化史: JDK8特性及说明
  • vue3基础知识一,安装及使用
  • 3D动态路障生成
  • Node.js--》node环境配置及nvm和nvm-desktop安装教程
  • java的参数传递机制概述,方法重载概述,以及相关案例
  • 2013年第二届数学建模国际赛小美赛B题寄居蟹进化出人类的就业模式解题全过程文档及程序