2012-04-23 45 views
-4

我想解決project euler problem 18http://projecteuler.net/problem=18 我試着用三角形底部的python工作的貪婪算法。 我向上移動一行,用貪婪算法找到最大的路線,並試圖連接最大的路線,但它不起作用。你是否有任何暗示將我放在正確的軌道上,而不解決問題的解決方案。歐拉#18與Python

這裏是功能:

def greedy(i): 
    if i%15==0: 
     a=[(b[i-15],i-15),(b[i-14],i-14)] 
     a=sorted(a) 
     a=a[-1] 
    else: 
     a=[(b[i-15],i-15),(b[i-16],i-16),(b[i-14],i-14)] 
     a=sorted(a) 
     a=a[-1] 
    return a 

乾杯

+2

而歐拉問題#18是...? – JJJ 2012-04-23 13:40:42

+0

什麼不行? – 2012-04-23 13:41:04

+0

@Juhana我相信他是指這個:http://projecteuler.net/problem=18 – JKirchartz 2012-04-23 13:42:06

回答

4

你聽說過的Dynamic Programming

考慮這個問題。什麼使路線最好?最後一步和以前的步驟之間有沒有關係?另外,看看這個三角形的貪婪算法並不能給你正確的答案:

 1 
    2 3 
    9 1 2 
1 1 2 4 
+0

我認爲最好的方法是針對這個問題向後工作,不確定你的意思是什麼動態編程。 – jamylak 2012-04-23 13:50:39

+0

@jamylak:你可以自上而下或自下而上地進行記憶。兩者都是一樣的。 – 2012-04-23 13:52:12

+0

是的,這就是我所指的。 – jamylak 2012-04-23 14:34:46