动态规划--01背包问题
1.动态规划--三角形最小路径和
2.动态规划--01背包问题
解题思路
二维列表思路
def bag_value(ls, vol):
"""
:param ls: 水果体积及价值列表,列表长度表示水果种类,ls[i][0]表示体积,ls[i][1]表示价值,
:param vol:背包体积
ls = [[3, 1], [4, 5], [5, 6], [7, 9]]
vol = 10
:return:
"""
num = len(ls) # 物品种类
# 生成一个二维列表存放当前背包体积时的最优价值
dp_ls = [[0 for _ in range(vol+1)] for _ in range(len(ls)+1)]
ls.insert(0, 0)
for i in range(1, num+1):
for j in range(1, vol+1):
print(i, j)
# i = 1
if ls[i][0] <= j:
# 比较上一个状态dp_ls[i - 1][j]和当前状态的值,最大有最优
# 当前状态的值 = 当前物品的价值 + (当前背包的体积-物品的体积)即上一个最优状态dp_ls[i-1]的列dp_ls[i-1][j-ls[i][0]]所对应的价值
dp_ls[i][j] = max(dp_ls[i - 1][j], ls[i][1] + dp_ls[i-1][j-ls[i][0]]) #
else:
dp_ls[i][j] = dp_ls[i-1][j]
print('最优矩阵:', dp_ls)
print("最大价值:", dp_ls[-1][-1])
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具