动态规划python实现,动态规划算法程序
使用过程
1.获取相应的信息。
(商品数量、背包体积、每件商品的体积和价值)
2.结构的最优值矩阵。
3.初始化最优值矩阵
(左右两边有空白矩阵供后续操作,但没有结果)
4.根据商品之间的最佳价值公式计算出相应的结果。
5.逆向导出矩阵得到一个商品,否则不装。
输出结果。
实例
打印(请输入要装载的物品数量和背包体积(用空格分隔): )
n,v=map(int,input()。split())#获取物品数量和背包体积
商品=[]#初始化商品清单
第:号
打印(f 请输入第{i 1}项的重量和值(用空格分隔): )
Goods.append (list (map (int,input()。split ())) #获取商品信息
#计算最佳值矩阵
DP=[[0 foriinrange(v1)]forjinrange(n1)]#初始化最优值矩阵
foriinrange(1,n 1):
forjinrange(1,v 1):
Dp[i][j]=dp[i-1][j]#默认不安装,即等于之前的最优值。
ifj=goods[i-1][0]:
#如果背包里还有足够的空间
dp[i][j]=max(dp[i][j],dp[i-1][j-goods[i-1][0])
货物[i-1][1])#比较装卸值,选择较大值。
#输出最佳值矩阵
对于iindp:
打印(一)
#计算最佳解决方案
X=[0foriinrange(n 1)]#初始化项目的状态,0:未加载,1:已加载。
foriinrange(n,0,-1):
Ifdp[i][v]==dp[i-1][v]:#,判断最优值是否发生了变化。如果没有变化,说明没有安装。
X[i]=0#未安装
Else:#如有变化,说明安装好了,减去相应重量。
X[i]=1包
v-=货物[i-1][0]#减去相应的重量
x[n]=1ifdp[n][v]!=0else0#判断最后一项是否加载。
#输出最佳解决方案
打印(背包里要装的物品是:)
foriinrange(1,n 1):
print(f number:{ str(I)} t weight:{ goods[I-1][0]} t value:{ goods[I-1][1]} n ifx[I]==1 else ,end= )
#输出最佳值
Print(该项的值为: ,dp[-1][-1])。以上是使用python的动态规划算法的过程。希望对你有帮助。更多python学习方向:Python基础课程
本教程运行环境:windows7系统,Python 3.9.1,DELL G3电脑。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。