码迷,mamicode.com
首页 > 编程语言 > 详细

Python 实现0-1背包

时间:2018-04-09 15:00:16      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:lse   nbsp   最大   end   lag   bsp   矩阵   class   ==   

代码:

import numpy as np
c=10             #背包容量
w=[2,2,6,5,4]    #物品重量
v=[5,3,5,4,6]     #物品价值
flag =[0,0,0,0,0]
m=np.zeros([5,11],int)           #用来保存 5x11的矩阵


for j in range(c+1):         #初始化第一行
    if(w[0]<=j):
        m[0][j]=v[0]
        flag[0] = 1
for i in range(1,5):
    for j in range(c+1):
        if (j<w[i]):
            m[i][j]=m[i-1][j]
        else:
            if(m[i-1][j-w[i]]+v[i]>m[i-1][j]):
                m[i][j] = m[i-1][j-w[i]]+v[i]
            else:
                m[i][j]=m[i-1][j]
print("最大价值为:",m[len(w)-1][c])

for i in range(4,0,-1):
    if(m[i][c]>m[i-1][c]):
        flag[i] = 1
        c = c -w[i]
    else:
        flag[i] = 0
print("选择的物品有:",end =  )
for i in range(len(flag)):
    if(flag[i]==1):
        print(i,end = )

 

Python 实现0-1背包

标签:lse   nbsp   最大   end   lag   bsp   矩阵   class   ==   

原文地址:https://www.cnblogs.com/raincute/p/8759120.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!