题解 | #数组分组#

数组分组

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

#本题中心思想:利用了排列组合函数combinations穷举
#自认为很厉害的算法

#输入
#将数组分成三组,5的倍数和0在a组内,3的倍数在b组
#剩下的数字在c组
n=int(input())
num=[int(x) for x in input().strip().split()]
a = [x for x in num if x % 5 == 0 or x ==0]
b = [x for x in num if x % 3 == 0]
c = [x for x in num if x not in a and x not in b]

#利用排列组合的函数combinations
#穷举c组分组情况
#满足sum(tup)+sum(a)==sum(c)+sum(b)-sum(tup)条件就返回'true',不再继续进行下去
def getresult(a,b,c):   
    for i in range(0,len(c)+1):
        combin= list(itertools.combinations(c, i))
        for tup in combin:
            if sum(tup)+sum(a)==sum(c)+sum(b)-sum(tup):
                print('true')
                return
    print('false')

#注意特殊情况:
#可能c组中没有数字
if len(c)==0:
    if sum(a)==sum(b):
        print('true')
    else:
        print('false')
else:
    getresult(a,b,c)

全部评论

相关推荐

04-06 16:59
已编辑
河南工业大学 Java
牛牛牛的牛子:最好扔了,实在没有选择的选择
点赞 评论 收藏
分享
03-25 19:00
东北大学 Java
程序员牛肉:太好了,是聊天记录。不得不信了。 当个乐子看就好,不要散播焦虑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务