python动态规划算法怎么用
短信预约 -IT技能 免费直播动态提醒
小编给大家分享一下python动态规划算法怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
python有哪些常用库
python常用的库:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。
1、使用过程
获取相应信息(商品数量、背包容积、各商品体积和价值)
结构的最佳值矩阵。
初始化的最佳值矩阵(上方和左侧留有空白矩阵作为后续运算,但没有结果)
根据商品之间的最佳价值公式计算出相应的结果。
逆向推导矩阵得到某个商品,或者没有安装。
输出结果。
2、实例
print('请输入待装物品数量和背包体积(空格隔开):')n, v = map(int, input().split()) # 获取物品数量和背包体积goods = [] # 初始化商品列表for i in range(n): print(f'请输入第{i + 1}个物品的重量和价值(空格隔开):') goods.append(list(map(int, input().split()))) # 获取商品信息 # 计算最优值矩阵dp = [[0 for i in range(v + 1)] for j in range(n + 1)] # 初始化最优值矩阵for i in range(1, n + 1): for j in range(1, v + 1): dp[i][j] = dp[i - 1][j] # 默认不装,即和上一项最优值相等 if j >= goods[i - 1][0]: # 如果背包剩余空间充足 dp[i][j] = max(dp[i][j], dp[i - 1][j - goods[i - 1][0]] + goods[i - 1][1]) # 对比装与不装的价值并选择较大值 """# 输出最优值矩阵for i in dp: print(i)""" # 计算最优解x = [0 for i in range(n + 1)] # 初始化物品状态,0:不装,1:装for i in range(n, 0, -1): if dp[i][v] == dp[i - 1][v]: # 判断最优值是否发生变化,如果没有变化,则说明没有装 x[i] = 0 # 不装 else: # 如果有变化,则说明装了,并减去对应重量 x[i] = 1 # 装 v -= goods[i - 1][0] # 减去对应重量 x[n] = 1 if dp[n][v] != 0 else 0 # 判断最后一个物品装不装 # 输出最优解print('背包应装物品为:')for i in range(1, n + 1): print(f'编号:{str(i)}\t重量:{goods[i - 1][0]}\t价值:{goods[i - 1][1]}\n' if x[i] == 1 else '', end='')# 输出最优值print('最大物品价值:', dp[-1][-1])
看完了这篇文章,相信你对“python动态规划算法怎么用”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网行业资讯频道,感谢各位的阅读!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341