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]

相关内容

热门资讯

黑科技辅助!wpk辅助神器(透... 黑科技辅助!wpk辅助神器(透视)软件透明辅助挂(本来是真的有挂)-哔哩哔哩是一款可以让一直输的玩家...
5分钟了解“创思维正版辅助器下... 5分钟了解“创思维正版辅助器下载”详细透视开挂辅助安装-哔哩哔哩;一、创思维正版辅助器下载有挂的是的...
两分钟科普!wpk真吗,哈糖大... 两分钟科普!wpk真吗,哈糖大菠萝可以开挂吗,曝光教程(发现有挂)-哔哩哔哩哈糖大菠萝可以开挂吗辅助...
第一分钟了解(昆仑大厅)外挂辅... 第一分钟了解(昆仑大厅)外挂辅助插件(透视)详细教程(2022已更新)(哔哩哔哩);亲真的是有正版授...
黑科技辅助!wpk俱乐部长期盈... 黑科技辅助!wpk俱乐部长期盈利打法(透视)软件透明挂黑科技(切实存在有挂)-哔哩哔哩;1、让任何用...
第6分钟了解“功夫川嘛辅助器”... 第6分钟了解“功夫川嘛辅助器”详细透视开挂辅助器-哔哩哔哩;人气非常高,ai更新快且高清可以动的一个...
第五分钟辅助!xpoker辅助... 第五分钟辅助!xpoker辅助,德州透视插件,攻略教程(有挂方法)-哔哩哔哩德州透视插件辅助器中分为...
两分钟了解(皮皮跑胡子)外挂透... 两分钟了解(皮皮跑胡子)外挂透明挂辅助工具(辅助挂)透明挂教程(2020已更新)(哔哩哔哩);皮皮跑...
黑科技辅助!微扑克可以加入俱乐... 您好,微扑克可以加入俱乐部这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩...
8分钟了解“掌中乐游戏中心辅助... 8分钟了解“掌中乐游戏中心辅助器”详细透视开挂辅助脚本-哔哩哔哩;1、这是跨平台的掌中乐游戏中心辅助...