Contents
Problem
最佳二元搜尋樹。
Solution
一樣是用DP去解,每個節點搜尋的 cost 為它左右子樹的 cost 相加,自己 (root) 並不需要算進去。
而 cost 則是用 深度*出現次數 ,所以只需要讓它每次在做分割時 重複加上 就可以完成深度的部分 (根的深度為 0 所以其 cost 也為 0),有點像在計算 huffman tree 權重的感覺。
DP 的列式:
cost = sum[j] - sum[i - 1];
dp[i][j] = min(dp[i][j] , dp[i][k - 1] + dp[k + 1][j] + cost - fre[k]);
//左子樹 + 右子樹 + 兩者的cost(深度增加)
Code
1 |
|