8-5 【Python0006】爬楼梯
分数 10
作者 doublebest
单位 石家庄铁道大学

【题目描述】 假设一段楼梯共n(n>1)个台阶,小朋友一步最多能上3个台阶,那么小朋友上这段楼梯一共有多少种方法。
【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。
【输入格式】在一行中输入楼梯台阶的数目n。
【输出格式】输出小朋友上这段楼梯的方法数。
【输入样例】15
【输出样例】5768

 

def climb_stairs(n):

 

"""

 

计算小朋友爬楼梯的方法数

 

 

 

参数:

 

n (int): 楼梯台阶的数目

 

 

 

返回:

 

int: 方法数

 

"""

 

if n <= 0:

 

return 0

 

elif n == 1:

 

return 1

 

elif n == 2:

 

return 2

 

elif n == 3:

 

return 4

 

 

 

# 使用动态规划计算方法数

 

dp = \[0\] \* (n + 1)

 

dp\[1\] = 1

 

dp\[2\] = 2

 

dp\[3\] = 4

 

 

 

for i in range(4, n + 1):

 

dp\[i\] = dp\[i - 1\] + dp\[i - 2\] + dp\[i - 3\]

 

 

 

return dp\[n\]

 

\# 获取用户输入

 

n = int(input("请输入楼梯台阶的数目: "))

 

\# 调用函数计算方法数并输出结果

 

methods = climb_stairs(n)

 

print("小朋友上这段楼梯的方法数:", methods)