# 1 2 3 5 8
# 根据得出的数据来看,后一项是前两项的和,得出数学公式 n=n-1 + n-2
# 则使用暴力递归
def func01(n):
if n == 1:
return 1
if n == 2:
return 2
return func(n-1) + func(n-2)
# 将暴力递归改为记忆化搜索,老规矩,先画图
# 可以看到重复解的都是当前状态是前两个状态的和,又因为只有一个变量,所以是一维数组
def func(n):
if n <= 0:
return 0
if n == 1:
return 1
if n == 2:
return 2
dp = [0] * n
dp[0] = 1
dp[1] = 2
for i in range(2,n):
dp[i] = dp[i-1] + dp[i-2]
return dp[n-1]
# 严格表结构好像在一维数组的时候没啥用
if __name__ == '__main__':
print(func(5))
python动态规划-爬楼梯
最新推荐文章于 2024-09-23 10:08:29 发布