相关疑难解决方法(0)

将数字列表分成2个相等的总和列表的算法

有一个数字列表.

该列表将分为2个相等大小的列表,总和之间的差异最小.必须打印总和.

#Example:
>>>que = [2,3,10,5,8,9,7,3,5,2]
>>>make_teams(que)
27 27
Run Code Online (Sandbox Code Playgroud)

在某些情况下,以下代码算法是否存在错误?

我如何优化和/或pythonize这个?

def make_teams(que):
    que.sort()
    if len(que)%2: que.insert(0,0)
    t1,t2 = [],[]
    while que:
    val = (que.pop(), que.pop())
    if sum(t1)>sum(t2):
        t2.append(val[0])
        t1.append(val[1])
    else:
        t1.append(val[0])
        t2.append(val[1])
    print min(sum(t1),sum(t2)), max(sum(t1),sum(t2)), "\n"
Run Code Online (Sandbox Code Playgroud)

问题来自http://www.codechef.com/problems/TEAMSEL/

python algorithm np-complete knapsack-problem dynamic-programming

23
推荐指数
2
解决办法
1万
查看次数

如何将一个数组分成3个部分,每个部分的总和大致相等

我有一个排列的数组,我想将它分成3个部分,以便它们的总和彼此最接近.

Ex: I have this array:

    10, 8, 8, 7, 6, 6, 6, 5

so it'll be divided into 3 part like:

    p1 {10,8} sum = 18
    p2 {8,7,6} sum = 21
    p3 {6,6,5} sum = 17

c# algorithm

7
推荐指数
1
解决办法
7632
查看次数