题解 | #分割等和子集#

分割等和子集

http://www.nowcoder.com/practice/65ade309fa4d4067a9add749721bfdc0

o1背包问题,体积为sum//2

n = int(input())
a = list(map(int, input().split()))
asum = sum(a)
if asum % 2 == 1:
    print("false")
elif len(a) % 2 == 0 and len(set(a)) == 1:
    print("true")
else:
    v = asum // 2
    dp = [False] * (v+1)
    dp[0] = True
    for i in range(n):
        for j in range(v, a[i] - 1, -1):
            dp[j] = dp[j-a[i]] or dp[j]
    if dp[-1]:
        print("true")
    else:
        print("false")
全部评论

相关推荐

现在才开始投还有可能吗😭😭😭
牛客621925249号:开秋招了已经
点赞 评论 收藏
分享
05-14 20:34
门头沟学院 Java
窝补药贝八股:管他们,乱说,反正又不去,直接说680
点赞 评论 收藏
分享
04-27 08:59
常州大学 Java
牛客139242382号:《两门以上汇编语言》
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-12 18:53
第一次听说还有无水工作!!!又是被刷新三观的一天
Lynn012:666第一次听到,你给他说这里不方便我们加个微信
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务