每個節點有選和不選兩種狀態,若選,則其孩子節點不可選,若該節點不選,則孩子節點可選也可不選
設dp[u][0]表示不選當前結點u的情況下以u為根的子樹所能得到得最大價值
dp[u][1]表示選當前結點u的情況下以u為根的子樹所能得到得最大價值
設v為其孩子節點
使用pair儲存選或不選兩種情況的值,通過dfs求解
class
solution;}
auto left_pair =
dfs(root-
>left)
;auto right_pair =
dfs(root-
>right)
;return;}
introb
(treenode* root)
};
樹形DP 樹形DP四例
是時候練一下dp了!我的題單 portkey f u,if fu,i 表示以u uu為根節點的子樹中保留i ii條樹枝的最大蘋果數 f u,i max f max f fu,i max這些題是菜,但也不能輕視啊!include using namespace std define in read i...
打家劫舍 dp問題
param nums return param nums return 假設打劫前i家能偷到的最大錢數為f i 第i家有的錢數為nums i 則有以下公式 當i為1時 f i nums i 當i為2時 f i max nums i nums i 1 當i大於2時 f i max nums i 1 n...
打家劫舍系列DP之打家劫舍II
你是乙個專業的小偷,計畫偷竊沿街的房屋,每間房內都藏有一定的現金。這個地方所有的房屋都圍成一圈,這意味著第乙個房屋和最後乙個房屋是緊挨著的。同時,相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝...