01背包问题动态规划递归式,0-1背包问题动态规划算法python

  01背包问题动态规划递归式,0-1背包问题动态规划算法python

  一个包可以装4公斤。现在有四样东西。重量分别为1kg、4kg、3kg、1kg,数值为1500、3000、2000、2000。

  现在包里装的东西价值最大,但不能超过背包的最大载重量。

  几样东西的重量

  w=[ 0,1,4,3,1 ]

  一些物品的价值

  v=[ 0,1500,3000,2000,2000 ]

  #项目数量

  n=len(w )- 1

  包的重量

  m=4

  #创建代表包中项目的列表。如果元素为True,则包含相应的元素。

  x=[]

  #放在袋子里的价值总和

  值=0

  #在前I项中,当装载量为J时,排列代表放入袋子中的最大值的矩阵,表[i][j]

  table=[0 for iinrange(m1)]for jinrange(n1)]

  动态(W,V,N,M,X):

  表格矩阵计算

  for range(1,n ^ 1):#表示一个想法接一个想法。

  Fornrange (1,m 1): #)的意思是一点一点考虑子背包的大小。

  If(j=w[I]): #)当背包尺寸大于物体重量时,可以考虑放进去

  表[i][j]=max(表[i-1][j],表[i-1][j-w[i]] v[i])

  否则:

  如果没有table[i][j]=table[i -1][j] #输入,将继承以前的值。

  #递归地把对象放在背包里寻找跳跃的地方,从最后的结果往回推。

  j=m

  forIinrange(n,0,-1):

  Iftable [I] [j] table [I-1] [j]: #如果再增加一项会增加价值,请将其添加到列表中。

  X.申请(I))。

  J=j-w[i] #这是背包剩余部分的负荷。

  #返回最大值,即表格中最后一行和最后一列的值

  值=表[n][m]

  返回值

  Print(最大值为,str) dynamic (w,v,n,m,x))

  Print(项目索引:,x))。

  PS:python动态规划背包问题

  将numpy作为np导入

  defbag(重量,数值,重量_控制) :

  num=Len(重量)

  体重。insert (0 0,0))。

  values.insert (0,0)).

  包=NP。零((num1,weight_cont 1),dtype=np.int))).

  forIinrange(1,编号1):

  forjinrange(1,weight_cont 1):

  如果j=重量[i]:

  Bag[i][j]=max(bag[i-1][j],bag [I-1] [j-weight [i]]值[I])

  否则:

  袋[I][j]=袋[i][j-1]

  返回包[-1][-1]

  if __name__==__main__ :

  重量=[ 1,2,4,10,12]

  值=[ 1200,1500,2000,1300,2500 ]

  权重_控制=20

  (re=Bag(Weight,values,weight_cont))))))))).

  是,打印(重新)

  至此,我已经介绍了这篇关于python实现动态编程背包的文章。关于python动态规划背包的内容,请搜索之前的文章或者继续查看以下相关文章。以后请多多关照。

  题目:动态规划背包问题的python实现分析

  本文地址:3358 www . CPP cns.com/jiao本/python/372287.html

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: