首页 > 其他 > 详细

砝码问题之二(完全背包问题)

时间:2016-04-14 23:58:53      阅读:608      评论:0      收藏:0      [点我收藏+]
有一组砝码,重量互不相等,分别为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

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

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

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

砝码问题之二(完全背包问题)

原文:http://www.cnblogs.com/webgavin/p/5393319.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!