python-爬楼梯

news/2024/7/7 22:55:11

题目描述

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

输入格式

一个整数。

输出格式

一个整数。

输入/输出样例

输入1

2

输出1

2

 

 解题思路:

这是一个经典的动态规划问题,也可以看作是斐波那契数列的一种变种。

假设到达第 n 阶楼顶的方法数为 f(n),那么 f(n) 可以由 f(n-1) 和 f(n-2) 两种方式组成,
即一次爬 n-1 阶,或者一次爬 n-2 阶。

因此,可以得到递推公式:f(n) = f(n-1) + f(n-2)。

同时,我们知道到达第一阶和第二阶的方法数分别为 f(1) = 1,f(2) = 2(一次爬一阶或两阶)。

接下来,我们可以用动态规划的方式,从下到上计算出 f(n),即先计算出 f(3)=1+2=3,f(4)=2+3=5,...,f(n)。

最终,f(n) 就是我们要求的结果,即到达楼顶的不同方法数。

python解:

def pa(n):
    if n==1:
        return 1
    if n==2:
        return 2
    return pa(n-1)+pa(n-2)

n=int(input())
print(pa(n))

 


http://lihuaxi.xjx100.cn/news/1830307.html

相关文章

HCIA-RS基础-静态路由协议

摘要:静态路由是一种在网络中广泛应用的路由选择方案,它以其简单的配置和低开销而备受青睐。本文将介绍静态路由的配置方法、默认路由的设置、路由的负载分担和备份策略。通过学习本文,希望可以你能够掌握静态路由的基本概念和在华为模拟器中…

开源语音大语言模型来了!阿里基于Qwen-Chat提出Qwen-Audio!

论文链接:https://arxiv.org/pdf/2311.07919.pdf 开源代码:https://github.com/QwenLM/Qwen-Audio 引言 大型语言模型(LLMs)由于其良好的知识保留能力、复杂的推理和解决问题能力,在通用人工智能(AGI&am…

flutter编译和构建鸿蒙应用程序(windows环境)

flutter编译和构建鸿蒙应用程序(windows环境) 问题背景 针对 OpenHarmony 的 Flutter 版本已经开源,参考 https://gitee.com/openharmony-sig/flutter_flutter。 本文为实践该流程,实现flutter打包鸿蒙hap包的流程。目前流程已经…

C语言每日一题(37)两数相加

力扣网 2 两数相加 题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&a…

安卓使用集锦

Android Studio 怎么连接MUMU模拟器并永久使用 (10条消息) Android Studio 怎么连接MUMU模拟器并永久使用_林池的博客-CSDN博客_android studio连接mumu模拟器 系统篇 WindowManager与LayoutParams:Android P下WindowManager与LayoutParams的详解 - 掘金 UI组件…

【计算机网络笔记】数据链路层——差错编码

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

waitnotify

文章目录 代码演示wait() - 阻塞等待notify() - 通知唤醒notifyAll() - 全部唤醒wait 和 sleep 的比较 由于线程之间是 抢占式执行的,因此 线程之间执行的先后顺序难以预知. 但是实际开发中有时候我们希望 合理的协调多个线程之间的执行先后顺序。join()方法也可…