题解 | #数组分组#

数组分组

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

# 只用考虑一个数组,是否能够达到和的一半
def dfs(left,mid,target):
    if sum(left) == target:
            return True
    if len(mid) == 0:
            return False
    else:
        for i in mid:
            if (sum(left) < target and i>0) or \
                (sum(left) > target and i<0):
                mid1 = mid.copy()
                l = False
                mid1.remove(i)
                l = dfs(left+[i],mid1,target)
                if l:
                    return True
        return False


def main(x):
    S = sum(x)
    if S%2 == 1:
        return False
    else:
        target = S//2
        left,right,mid = [0],[0],[]
        for i in x:
            if i%5 == 0:
                left.append(i)
            elif i%3 == 0:
                right.append(i)
            else:
                mid.append(i)
        if dfs(left,mid,target):
            return True
        else:
            return False

info = []
while True:
    try:
        n,x = int(input()),list(map(int,input().strip().split()))
        info.append(x)
    except:
        break
for x in info:
    if main(x):
        print('true')
    else:
        print('false')
全部评论

相关推荐

10-21 00:37
已编辑
门头沟学院 C++
小浪_Coding:你问别人,本来就是有求于人,别人肯定没有义务免费回答你丫, 有点流量每天私信可能都十几,几十条的,大家都有工作和自己的事情, 付费也是正常的, 就像你请别人搭把手, 总得给人家买瓶水喝吧
点赞 评论 收藏
分享
09-22 22:22
中山大学 Java
乌鱼子萨奇:羡慕你啊,直接转正了,都不用经历秋招的炼狱,但是你少经历了很多痛苦的事情啊
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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