理论基础
五步曲:
1.dp数组以及下标的含义
2.递推公式
3.dp数组如何初始化
4.遍历顺序
5.打印dp数组
第一步:确定dp[i]含义 dp[i]:第i个契波数值为dp[i]
第二步:递推公式:dp[i]=dp[i-1]+dp[i-2]
第三步:dp数组如何初始化 dp[0]=1,dp[1]=1
第四步:遍历顺序 从前往后
第五步: 打印dp数组
class Solution:
def fib(self, n: int) -> int:
#动态规划
dp=[0]*(n+2)
dp[1]=1
for i in range(2,n+1):
dp[i]=dp[i-1]+dp[i-2]
return dp[n]
509. 斐波那契数
1阶 1种方法
2阶 2种方法
3阶 3种方法
4阶 5种方法
dp[i]:达到i阶有dp[i]种方法
70. 爬楼梯
dp[i]:到达i位置最小花费为dp[i]
dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
class Solution:
def minCostClimbingStairs(self, cost: List[int]) -> int:
n=len(cost)
dp=[0]*(n+1)
for i in range(2,n+1):
dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])
return dp[n]