动态规划——01背包问题、完全背包(python、一维DP)

01-背包问题:从最大容量开始,从后往前遍历背包容量

每种物品只能选择一次。物品种类为n,背包容量为k。从最大容量开始,从后往前遍历背包容量,小于当前物品容量的背包大小不遍历,即遍历到wi即可。

(1)容量不超过k时,最大价值为多少

dp数组初始化:dp=0*(k+1) ,全部初始化为0,表示都可达

复制代码
dp=[0]*(k+1)
for i in range():
    for j in range(k,w[i]-1,-1):
        dp[j]=max(dp[j],dp[j-w[i]]+val[i])
return dp[k]

(2)容量恰好为k时,最大价值为多少,如果不能恰好为k,则表示不可达,不可行

dp初始化:dp=float('-inf'),初始化为负无穷大,表示为不可达

dp0=0 容量为0时,一定可达

复制代码
dp=[float('-inf')]*(k+1)
for i in range():
    for j in range(k,w[i]-1,-1):
        dp[j]=max(dp[j],dp[j-w[i]]+val[i])
if dp[k]==float('-inf'):
    print(0)
    return 0
else:
    print(dp[k])
    return dp[k]

完全背包问题:从前往后遍历背包容量

每种物品可以选择无限多次。物品种类为n种。

复制代码
dp=[0]*(k+1)
for i in range(n):
    for j in range(w[i],k+1):
        dp[j]=max(dp[j],dp[j-w[i]]+val[i])
return dp[k]
相关推荐
-森屿安年-16 天前
63. 不同路径 II
c++·算法·动态规划
林森lsjs16 天前
斐波那契数列的 N 种解法:从递归到动态规划的优化之路【算法思考】
算法·动态规划
workflower17 天前
互联网与大数据环境下制造服务模式
人工智能·自然语言处理·数据挖掘·自动驾驶·动态规划·制造
2601_9618451517 天前
花生十三网课网盘|百度网盘|下载
数据结构·算法·链表·贪心算法·排序算法·线性回归·动态规划
拂拉氏17 天前
【知识讲解-题目讲解】算法系列之动态规划入门(下)
算法·leetcode·动态规划
2601_9618451517 天前
花生十三图推思维导图|图形推理|技巧
数据结构·算法·链表·贪心算法·排序算法·线性回归·动态规划
workflower18 天前
使用大语言模型处理用户需求
大数据·人工智能·设计模式·重构·动态规划
青山木18 天前
Hot 100 --- 滑动窗口最大值
java·数据结构·算法·leetcode·动态规划
xhtdj19 天前
智源大会圆桌大模型没有终局具身智能可能是中国的 AlphaGo 时刻
人工智能·clickhouse·安全·动态规划
2301_7644413319 天前
番茄钟+AI:高效专注的秘密武器
人工智能·算法·数学建模·动态规划·交互