2022年11月20日 星期日

[120] Triangle

雖然感覺用recursive 可以做出來但是不意外的卡住XD
看C 可以用下面這個解法,從倒數第二層,去算它跟它的下一層相加的min, 然後就把自己改成相加的min 值,這樣一路往上把值passing 上去, 最後top/root 就會存了最小相加值了!!!
但是感覺這是一個暴力窮舉法嗎?貌似不是DP?! (thinking 圖)
#define MIN(A,B) (A>B)?B:A

int minimumTotal(int** triangle, int triangleSize, int* triangleColSize){
int sum=0;
for (int i=triangleSize-2;i>=0;i--)
{
for (int j=0;j< triangleColSize[i];j++)
triangle[i][j]+=MIN(triangle[i+1][j], triangle[i+1][j+1]);

}
return triangle[0][0];
}

沒有留言:

張貼留言