2017-10-29 24 views
0

でIは三角形パス三角形

例では、すべての可能なパスの中から最大の和を求めるためのプログラムを作っ2 + 3 = 6

マイコード:

def maxSum(tri, n): 
    if n > 1: 
     tri[1][1] = tri[1][1]+tri[0][0] 
     tri[1][0] = tri[1][0]+tri[0][0] 
    for i in range(2, n): 
     tri[i][0] = tri[i][0] + tri[i-1][0] 
     tri[i][i] = tri[i][i] + tri[i-1][i-1] 
    for j in range(1, i): 
     if tri[i][j]+tri[i-1][j-1] >= tri[i][j]+tri[i-1][j]: 
      tri[i][j] = tri[i][j] + tri[i-1][j-1] 
     else: 
      tri[i][j] = tri[i][j]+tri[i-1][j] 
print max(tri[n-1]) 


#my list containing the triangle 
tri = [[1], [2,1], [1,2,3]] 
maxSum(tri, 3) 

しかし5.Anyoneを助けてくださいと私のコードが出力を印刷しています私のコードを修正する?

+1

"経路"が何であるかを正確に定義してください –

+1

可能な経路を定義するものは教えてくれませんでした。 –

+0

@Varun Shaandhesh:問題が解決する場合は、https://stackoverflow.com/help/someone-answersにアクセスしてスレッドを更新してください –

答えて

0

私は間違っていないよ場合は、ここ3の三角形のためにあなたの条件

で、手段はすべての可能な3つの要素の組み合わせを選択して、3の組み合わせを取得します(6つの要素を持つことになりますし、あなたは最高のパスを取得したいですあなたが最大の合計を与える数字が。これは、簡単なコードで実現することができる

コード

`# declaring list 
tri=[[1], [2, 1], [1, 2, 3]]` 

#getting all possible 3 elements combinations out of available 6 elements. The below two lines will give list of tuples 
import itertools 
temptri=list(itertools.product(*tri)) 

#Converting tuple to list 
ftri=[] 
for i in temptri: 
    ftri.append(list(i)) 
#getting max sum of the avilable 3 elements combinations 
print sum(max(ftri, key=sum)) 

例入力/出力

input 
tri=[[1], [2, 5], [1, 2, 3]] 
output 
6 

input 
[[1], [2, 5], [1, 2, 3]] 
output 
9 

input 
[[1], [2, 5], [1, 2, 3],[1,2,3,7]] 
output 
16 
0

あなたは有効なパスが何であるかを指定したので、ちょうどサンディープクレードのようにしていない、私はあまりにも前提行った:三角形の最大数の合計を取得するには を:

def maximum(x): 
    return max(x) 

triangle= [[1], [2, 1], [1, 2, 3],[2,3,4,5]] 
#the above can be represented as: 
#  1 
#  2 1 
#  1 2 3 
# 2 3 4 5 

max_numbers = list(map(maximum,triangle)) 
print(max_numbers,'====>',sum(max_numbers)) 

あなたはラムダ関数を使用してコードをより簡潔にすることができ、あなたに三角形の最大数の合計と三角

の任意のサイズのためのスケーラブルを与える:

print(sum(list(map(lambda x:max(x),triangle))))