HW.JAVA title 0-1

Here Insert Picture Description

# 4
# 1 5 -5 1
"""
先将5和3的倍数分到两个组,计算他们差
然后将剩余的元素按照上面得到的差进行均分
这样就把问题转换为了求定和的问题,用递归即可
"""
while True:
    try:
        n = int(input())
        array = list(map(int, input().split()))
        sum_3 = 0
        sum_5 = 0
        remain = []
        for number in array:
            if number % 3 == 0 and number % 5 !=0:
                sum_3 += number
                continue
            if number % 5 == 0:
                sum_5 += number
                continue
            remain.append(number)

        maxer = max(sum_3, sum_5)
        miner = min(sum_3, sum_5)
        mid = (sum(remain) - (maxer-miner))/2
        def helper(mid, index, array, sumer):
            if index == len(array):
                return mid == sumer
            if mid == sumer:
                return True
            return helper(mid, index+1, array, sumer+array[index]) or helper(mid, index+1, array, sumer)

        result = helper(mid, 0, remain, 0)
        if result:
            print("true")
        else:
            print("false")
    except:
        break

Guess you like

Origin blog.csdn.net/dpengwang/article/details/93192357