0

最大ルートの出力をそれぞれ別の行に出力しようとしています。

コードは次のとおりです。

def triangle(rows):
    PrintingList = list()
    for rownum in range (rows ):     
        PrintingList.append([])
        newValues = map(int, raw_input().strip().split())
        PrintingList[rownum] += newValues
    return PrintingList

def routes(rows,current_row=0,start=0): 
        for i,num in enumerate(rows[current_row]): 
            if abs(i-start) > 1:   
                continue
            if current_row == len(rows) - 1: 
                yield [num]
            else:
                for child in routes(rows,current_row+1,i):
                    yield [num] + child

testcases = int(raw_input())
output = []
for num in range(testcases):
    rows= int(raw_input())
    triangleinput = triangle(rows)
    max_route = max(routes(triangleinput),key=sum)
    output.append(sum(max_route))

print '\n'.join(output)

私はこれを試しました:

2
3
1
2 3
4 5 6
3
1
2 3 
4 5 6

値を出力しようとすると、次のようになります。

print '\n'.join(output)
TypeError: sequence item 0: expected string, int found

これをどのように変更しますか?いくつかのガイダンスが必要です...

4

2 に答える 2

4

これを試して:

print '\n'.join(map(str, output))

Python は文字列のみを結合できるため、最初に int を文字列に変換する必要があります。これがそのmap(str, ...)部分の役割です。

于 2012-09-12T10:12:50.003 に答える
2

@grc は正しいですが、改行で新しい文字列を作成する代わりに、次のように簡単に実行できます。

for row in output:
    print row
于 2012-09-12T10:34:03.883 に答える