现在小瓜想通过台阶走上平台最底层小瓜所在的层编号为 最顶层编号为 。由于小瓜的腿比较短他一次只能向上走 级或者 级台阶。小瓜想知道他有多少种方法走上平台你能帮帮他吗?输入一个整数 其中 。输出一行一个整数表示小瓜上台阶的方案数
这是一个典型的动态规划问题。我们可以用一个数组dp来记录小瓜上到每一层台阶的方案数。dp[i]表示小瓜上到第i层台阶的方案数。
初始时,dp[0]=1,表示小瓜已经在最底层台阶上。
然后我们从第一层台阶开始,依次计算dp[1]、dp[2]、...、dp[n]。
对于dp[i],由于小瓜一次只能向上走k级或者k+1级台阶,所以他可以从第i-k层或者第i-k-1层台阶上走到第i层。因此,dp[i] = dp[i-k] + dp[i-k-1]。
最后,输出dp[n],即小瓜上到第n层台阶的方案数。
以下是一个示例代码实现:
n = int(input())
dp = [0] * (n+1) dp[0] = 1
for i in range(1, n+1): if i >= 2: dp[i] = dp[i-1] + dp[i-2] else: dp[i] = dp[i-1]
print(dp[n])
原文地址: http://www.cveoy.top/t/topic/isvq 著作权归作者所有。请勿转载和采集!