1011: 背包问题

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:207 解决:98

题目描述

有一个背包可放入的物品总重量20公斤,共有8件物品,重量分别为1,7,3,8,5,10,11,4公斤。问:从这些物品中如何找出若干件,刚好是20公斤? (不考虑体积)
算法思路:我们把8件物品,看作8个位置,每个物品被选中记作1,不被选中记作0。显然,共有28=256种不同的选择方法。在这256种选择方法中,如果选中的物品重量之和等于20,就是我们要寻找的方案。

输入

输出

输出不同的装入方式。

提示

def DToB(x,n):
    if n<1:
        n=1
    R=[0 for i in range(0,n)]
    for i in range(n-1,-1,-1):
                      
        x=x//2
    return R
W=[1,7,3,8,5,10,11,4]
total=20;m=len(W)
nm=           
k=0
for x in range(0,nm):
    a=DToB(x,m)
    T=[]
    for i in range(0,m):
        if a[i]==1:
                                  
    if total==sum(T):
                            
        print(T)
print('共有',k,'种装入方法')