题解 | #数组分组#

数组分组

http://www.nowcoder.com/practice/9af744a3517440508dbeb297020aca86

from itertools import combinations
while True:
    try:
        n=int(input())
        l=input().split()
        L = []
        for i in l:
            L.append(int(i))
        def f(n,L):
            sum3 = 0
            sum5 = 0
            l35=[]
            if sum(L)%2!=0:
                print('false')
                return False
            for i in L:
                if i%3==0:
                    sum3+=i
                elif i%5==0:
                    sum5+=i
                else:
                    l35.append(i)
            #通过计算,不满足被3、5整除的数组的子集要满足和为summ:1.当summ是小数则不存在该子集 2.当summ为整数,则遍历所有组合求和,满足一个就跳出循环
            summ=(abs(sum3-sum5)+sum(l35))/2
            if (abs(sum3-sum5)+sum(l35))%2==1:
                print('false')
                return False
            else:
                for i in range(len(l35)+1):
                    for j in combinations(l35,i):
                        if sum(j)==summ:
                            print('true')
                            return True
                print('false')
                return False
        f(n,L)
    except:
        break
全部评论

相关推荐

01-30 16:13
浙江大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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