(十三)算法设计思想之“动态规划”

本文介绍了动态规划的概念,强调了它与分治法的区别,并通过LeetCode的70.爬楼梯和198.打家劫舍问题详细解释了解题步骤。动态规划的核心在于定义子问题并反复执行,以达到解决原问题的目的。每个问题的时间复杂度和空间复杂度都在O(n)范围内。
摘要由CSDN通过智能技术生成

动态规划是什么?

动态规划是算法设计中的一种方法
它将一个问题分解为相互重叠的子问题,通过反复求解子问题,来解决原来的问题
在这里插入图片描述
在这里插入图片描述
最大区别在于子问题是否独立,子问题相互重叠是动态规划,子问题独立就是分而治之

动态规划的步骤

定义子问题
反复执行

LeetCode:70.爬楼梯

在这里插入图片描述
解题思路
爬到第n阶可以在第n-1阶爬1个台阶,或者在第n-2阶爬2个台阶
F(n) = F(n-1) + F(n-2)
使用动态规划
解题步骤
定义子问题:F(n) = F(n-1) + F(n-2)
反复执行:从2循环到n执行上述公式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值