没有合适的资源?快使用搜索试试~ 我知道了~
1. 一维 DP 2. 二维 DP 3. DP 的本质: 递归 + 递推 (至底向上规划)
资源详情
资源评论
资源推荐
第五周学习总结!
动态规划(DP)总结:$
1. 一维 DP$
f(n) = f(n-1) + f(n-2)$
Fibonacci 数列
爬楼梯问题
$
2. 二维 DP$
最长公共子序问题:$
给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列。
一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对
顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。
例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的「公
共子序列」是这两个字符串所共同拥有的子序列。
若这两个字符串没有公共子序列,则返回 0。
$
def longestCommonSubsquence(self, text1, text2):
m = len(text1)
n = len(text2)
dp = [ [0] * len(n+1) for _ in range(m+1) ]
for i in range(1, m+1):
for j in range(1, n+1):
if text[i-1] == text[j-1]:
dp[i][j] = dp[i-1][j-1] + 1
else:
dp[i][j] = max(dp[i-1][j], dp[i][j-1])
return dp[-1][-1]
3. DP 的本质:$ 递归$ +$ 递推$ (至底向上规划)$ $
DP 的两种形式:$
爬楼梯问题:你正在爬楼梯。需要
n
阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种同的法可以爬到楼顶呢?
! 自顶向下(Top$down)$
def climbStairs1(self, n):
if n == 1:
return 1
if n == 2:
家的要素
- 粉丝: 19
- 资源: 298
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0