day32-dynamic programming-part01-8.3
创始人
2024-11-12 02:36:03
0

tasks for today:

1. 理论基础

2. 509.斐波那契数列

3. 70.爬楼梯

4. 747.是用最小花费爬楼梯

--------------------------------------------------------------------------

1. 理论基础

定义区分:

如果某一问题有很多重叠子问题,使用动态规划是最有效的。

所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的

步骤:

状态转移公式(递推公式)是很重要,但动规不仅仅只有递推公式。

  1. 确定dp数组(dp table)以及下标的含义
  2. 确定递推公式
  3. dp数组如何初始化
  4. 确定遍历顺序
  5. 举例推导dp数组

2. 509.斐波那契数列

In this practice, although the mindset is simply, this is a good opportunity to understanding how the 5-step mode proceed.

1st: determin the dp table and the index, dp[i] represent the i number value;

2nd: the dp recursive equation: dp[i] = dp[i-1] + dp[i-2]

3rd: initialize, dp[0]=0 and dp[1]=1, this is prepared for the first round in the loop

4th: traverse sequence, from start to end

5th: a manual check to derive several steps of dp

class Solution:     def fib(self, n: int) -> int:         if n <= 1: return n          dp = [0] * (n+1)         dp[1] = 1          for i in range(2, n+1):             dp[i] = dp[i-1] + dp[i-2]          return dp[n]

3. 70.爬楼梯

In this practice, the essence is figuring out how the number of method to get up onto step n, 1st is step onto n-1 then one more step 1, whole the other method is step onto n-2 and one more step 2, so the dp[n] = dp[n-1] + dp[n-2]

class Solution:     def climbStairs(self, n: int) -> int:         if n <= 3: return n          dp = [0] * (n+1)         dp[0] = 1         dp[1] = 1         dp[2] = 2          for i in range(3, n+1):             dp[i] = dp[i-1] + dp[i-2]                  return dp[n]

4. 747.是用最小花费爬楼梯

the mindset is also decomposing each i's result into the previosus i-1 and i-2.

In this practice, the key is:

1. figuring out the top is not the bigest index in cost, which is the last step instead of the top.

2. do foget adding the corresponding cost for step on the step.

class Solution:     def minCostClimbingStairs(self, cost: List[int]) -> int:         dp = [0] * (len(cost) + 1)          for i in range(2, len(dp)):             dp[i] = min(dp[i-1] + cost[i-1], dp[i-2] + cost[i-2])                  return dp[-1]

相关内容

热门资讯

相较于以往!aapoker怎么... 相较于以往!aapoker怎么开辅助器,aapoker怎么拿好牌(透视)窍门教程(一贯存在有挂)-哔...
透视妙计!wepoker高级辅... 透视妙计!wepoker高级辅助,wepoker辅助是真的假的(脚本)专业教程(总是是真的挂)-哔哩...
透视推荐!wpk透视是真的吗(... 透视推荐!wpk透视是真的吗(透视)wpk系统是否存在透视行为,教程经验(竟然有挂)-哔哩哔哩1、w...
连日来!aapoker透视脚本... 连日来!aapoker透视脚本入口,aa poker透视软件(透视)绝活教程(切实是真的挂)-哔哩哔...
透视烘培!wepoker是不是... 透视烘培!wepoker是不是有人用挂,wepoker养号规律(脚本)总结教程(竟然是真的挂)-哔哩...
透视开挂!wpk透视插件(透视... 透视开挂!wpk透视插件(透视)wpk辅助插件,教程总结(有挂猫腻)-哔哩哔哩1、超多福利:超高返利...
有玩家发现!aapoker脚本... 有玩家发现!aapoker脚本,aapoker万能辅助器(透视)课程教程(果然是有挂)-哔哩哔哩该软...
透视演示!wepoker辅助软... 透视演示!wepoker辅助软件视频,wepoker开脚本视频(脚本)解迷教程(本来是有挂)-哔哩哔...
透视总结!wpk插件辅助(透视... 透视总结!wpk插件辅助(透视)如何判断wpk辅助软件的真假,教程窍门(真实有挂)-哔哩哔哩1、实时...
网友热议!aapoker辅助软... 网友热议!aapoker辅助软件合法吗,aapoker辅助器是真的吗(透视)大纲教程(果然是真的挂)...