是个传颂厨

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
有一组砝码,重量互不相等,分别为m1、m2、m3……mn;每种砝码的数量有无限个。 
现要用这些砝码去称物体的重量,给你一个重量n,请你判断有给定的砝码能否称出重量n。 
现在给你一个正整数列表w和一个正整数n,列表w中的第i个元素w[i]表示第i种砝码的重量,
n表示要你判断的重量。如果给定砝码能称出重量n,输出Yes,否则输出No。
例如,w=[2,5,11], n=9,则输出Yes(取两个2,一个5)。
w = [2, 5, 11]
n = 9
S = [-1 for i in xrange(n+1)]
S[0] = 0
for j in xrange(len(w)):
    for k in xrange(1, n+1):
        if k-w[j] >= 0 and not S[k-w[j]] == -1:
            S[k] = 1
if not S[n] == -1:
    print 'Yes'
else:
    print 'No'

完全背包问题,刚开始弄懂这个还是费了一些劲。。。

这个可以说是无价值完全背包问题,每个东西只有体积并没有价值。

完全背包别人写的比较好,请百度。。。

posted on 2016-04-14 22:20  是个传颂厨  阅读(685)  评论(0)    收藏  举报