給定乙個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。
相鄰的結點 在這裡指的是 下標 與 上一層結點下標 相同或者等於 上一層結點下標 + 1 的兩個結點。
例如,給定三角形:
[[2],
[3,4],
[6,5,7],
[4,1,8,3]
]自頂向下的最小路徑和為 11(即,2 + 3 + 5 + 1 = 11)。
說明:如果你可以只使用 o(n) 的額外空間(n 為三角形的總行數)來解決這個問題,那麼你的演算法會很加分。
class
solution
int n = ********.
size()
;if(n==1)
vectorint>>
dp(n,vector<
int>
(n,0))
; dp[0]
[0]=********[0]
[0];
dp[1]
[0]= dp[0]
[0]+********[1]
[0];
dp[1]
[1]= dp[0]
[0]+********[1]
[1];
//cout<<1(n==2)
for(
int i=
2;i++i)
else
if(j==********[i]
.size()
-1)else}}
int min_res = int_max;
//cout(int j=
0;j<********[n-1]
.size()
;++j)
return min_res;}}
;11120-san-jiao-xing-zui-xiao-lu-jing-he-by-he-zi-
11/
class
solution
int n = ********.
size()
;if(n==1)
vector<
int>
dp(n,0)
; dp[0]
= ********[0]
[0];
//cout(int i=
1;i++i)
dp[0]
= ********[i][0
]+dp[0]
;}//cout<<1for(
int i=
0;i<********[n-1]
.size()
;++i)
return min_res;}}
;
120 三角形最小路徑和
我現在知道怎麼結合遞迴和動態規劃的方法了,不需要寫出遞迴到方法。當熟練後,繼續用遞迴的方式思考問題,只不過是在腦中將其轉化為動態規劃,這道題就是例子。只不過我只寫出了n2的,對我來說我已經挺滿意了,畢竟我本地測試後oj一次性通過 阿,我知道了,他們到空間複雜的n是指每次只儲存上一行的值,還有人更雞賊...
120 三角形最小路徑和
給定乙個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。例如,給定三角形 2 3 4 6,5 7 4,1 8,3 自頂向下的最小路徑和為 11 即,2 3 5 1 11 說明 如果你可以只使用 o n 的額外空間 n 為三角形的總行數 來解決這個問題,那麼你的演算法會很加分。...
120 三角形最小路徑和
120.三角形最小路徑和 給定乙個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。例如,給定三角形 2 3,4 6,5,7 4,1,8,3 自頂向下的最小路徑和為11 即,2 3 5 1 11 說明 如果你可以只使用 o n 的額外空間 n 為三角形的總行數 來解決這個問題,...