Algorithmus zum Aufteilen einer Liste von Zahlen in 2 gleiche Summenlisten

Gibt es eine Liste von zahlen.

Die Liste ist aufgeteilt in 2 gleich große Listen, mit einem minimalen Unterschied in der Summe. Die Summen ausgedruckt werden.

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

Ist es ein Fehler im folgenden code-Algorithmus für einen Fall?

Wie kann ich optimieren und/oder 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"

Frage ist von http://www.codechef.com/problems/TEAMSEL/

InformationsquelleAutor der Frage Lakshman Prasad | 2009-05-20

Schreibe einen Kommentar