在倒三角形中找到一條從頂點到底邊的路徑,使得路徑上所有數字的和最大。路徑上的每一步只能往左下或者往右下走,只需給出結果,不必給出具體的路徑。
**:
numbers =[[
7],[
3,8]
,[8,
1,0]
,[2,
7,4,
4],[
4,5,
2,6,
5]]def
biggest_number_dpfunc
(layers, numbers)
: best_temp_result =
for i in
range(1
, layers +1)
:if i ==1:
0])else
: temp_list =
for j in
range
(i):
if j ==0:
-1][
0]+ numbers[i -1]
[j])
elif j == i -1:
-1][
-1]+ numbers[i -1]
[j])
else
:max
(best_temp_result[-1
][j -1]
, best_temp_result[-1
][j]
)+ numbers[i -1]
[j])
return best_temp_result,
max(best_temp_result[-1
])print
(biggest_number_dpfunc(
4, numbers)
)
輸出結果:
([[7], [10, 15], [18, 16, 15], [20, 25, 20, 19]], 25)
在倒三角形中找到一條從頂點到底邊的路徑,使得路徑上所有數字的和最大,同時還要保證往左下的步數與往右下的步數相差不超過1。路徑上的每一步只能往左下或者往右下走,只需給出結果,不必給出具體的路徑。
**:
numbers =[[
7],[
3,8]
,[8,
1,0]
,[2,
7,4,
4],[
4,5,
2,6,
5]]def
biggest_number_dpfunc2
(layers, numbers)
: best_temp_result =
for i in
range(1
, layers +1)
:if i ==1:
0])else
: temp_list =
for j in
range
(i):
if j ==0:
-1][
0]+ numbers[i -1]
[j])
elif j == i -1:
-1][
-1]+ numbers[i -1]
[j])
else
:max
(best_temp_result[-1
][j -1]
, best_temp_result[-1
][j]
)+ numbers[i -1]
[j])
if layers %2==
1:return best_temp_result[-1
][int(
(layers -1)
/2)]
else
:return
max(best_temp_result[-1
][int(layers /2)
], best_temp_result[-1
][int(layers /2-
1)])
print
(biggest_number_dpfunc2(
4, numbers)
)
輸出結果:
25
動態規劃 基礎題 數字三角
數字三角形 問題描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 上圖給出了乙個數字三角形。從三角形的頂部到底部有很多條不同的路徑。對於每條路 徑,把路徑上面的數加起來可以得到乙個和,和最大的路徑稱為最佳路徑。你的任務就是求 出最佳路徑上的數字之和。輸入資料 輸入的第一行是乙個整數 ...
動態規劃 數字三角形問題
數字三角形問題 time limit 1000ms memory limit 65536kb problem description 給定乙個由n行數字組成的數字三角形如下圖所示。試設計乙個演算法,計算出從三角形的頂至底的一條路徑,使該路徑經過的數字總和最大。對於給定的由n行數字組成的數字三角形,計...
動態規劃 數字三角形問題
有乙個由非負整數組成的三角形,第一行只有乙個數,除了最下行之外每個數的左下方和右下方各有乙個數.3 24 10 1 4 3 2 20 從第一行的數開始,每次可以往左下或右下走一格,直到走到最下行,把沿途經過的數全部加起來,如何走才能使得這個和盡量大?輸入 三角形的行數n,數字三角形的各個數 從上到下...