题解 | #称砝码#

称砝码

http://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c

# 首先根据输入顺序,将砝码用数字序列表示,例如2个1g和1个2g,就用 1 1 2的序列表示;
# set序列用来表示加入当前砝码之前能产生的重量种类;
# set初始化为{0};当第一个1g砝码放入时,则set中需要插入原先set中的所有元素+1g后的结果;即{0, 0+1};
# 当第二个1g加入时,则set会插入{0+1, 1+1},就变成了{0, 1, 2};
# 重复上述步骤加入所有砝码;则最后set的大小即为能产生的重量种类
import sys
while True:
    try:
        n = int(input())
        ms = list(map(int, input().split()))
        xs = list(map(int, input().split()))
        m_l = []
        for i in range(len(ms)):
            for x in range(xs[i]):
                m_l.append(ms[i])
        c_set = {0}
        for m in m_l:
            for c in set(c_set):
                c_set.add(m + c)
        print(len(c_set))
    except:
#         print(sys.exc_info())
        break
















全部评论

相关推荐

11-24 11:23
门头沟学院 C++
点赞 评论 收藏
分享
10-25 12:05
已编辑
湖南科技大学 Java
若梦难了:我有你这简历,已经大厂乱杀了
点赞 评论 收藏
分享
qz鹿:*** 祝他毕业就失业
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务