题解 | #数组分组#

数组分组

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

while True:
    try:
        a = int(input())
        b = list(map(int,input().split()))
        
        g1 = []
        g2 = []
        g3 = []
        for i in b:
            if i % 5 == 0:
                g1.append(i)
                #print(g1)
            else:
                if i % 3 == 0:
                    g2.append(i)
                else:
                    g3.append(i)
        #print(g3)           
        
        def group(g1, g2, g3):
            #g = [g1, g2]
            #print(g[0])
            if len(g3) == 0:
                #print(g1)
                return sum(g1) == sum(g2)
            else:
                for j in g3:
                    p = g1 + [j]
                    q = g2 + [j]
                    g3 = g3[1:] #!!!!!注意这里不能用remove否则会依次缩小选择!每一次选择都基于之前的选择
                    #比如用例 3 8 8 5 14用remove并不能通过。g3[1:]的写法保证每次都是单独的判断!互不相关
                    #print(g3)
                    if group(p,g2,g3) or group(g1,q,g3):
                        return True
                    else:
                        return False
            
            
            #for i in range(len(g)):
              #  rest = g[:i] + g[i+1:]
               # chosen = g[i]
                #print(chosen)
                #for j in g3:
                    #chosen.append(j)
                    #print(chosen)
                 #   g3.remove(j)
                   # print(g3)
                   # if group(chosen.append(j), rest, g3):# or group(chosen, rest.append(j) ,g3):
                    #    return True
                    #else:
                     #   return False
            #return False
        if group(g1, g2, g3):
            print('true')
        else:
            print('false')
        
    except:
        break
全部评论

相关推荐

Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务