← 返回博客列表
Meta

Meta 動態規劃面試:員工休假優化問題

2025-10-30

Meta 面試中的樹形 DP 題目。本文通過員工休假優化問題,展示樹形動態規劃的應用,oavoservice 助你掌握高階 DP 技巧。

📋 問題背景

公司組織結構是一棵樹,每個員工有休假天數需求。 規則:如果員工休假,其直接下屬不能休假。 目標:求最大總休假天數。

🎯 核心思路

這是經典的 樹形 DP 問題,類似「打家劫舍 III」。

解法:樹形 DP

class Employee:
    def __init__(self, id, vacation_days):
        self.id = id
        self.vacation_days = vacation_days
        self.subordinates = []

def max_vacation_days(root):
    def dfs(node):
        if not node:
            return (0, 0)
        
        # take: 當前員工休假
        # not_take: 當前員工不休
        take = node.vacation_days
        not_take = 0
        
        for sub in node.subordinates:
            sub_take, sub_not_take = dfs(sub)
            
            # 如果當前員工休假,下屬不能休
            take += sub_not_take
            
            # 如果當前員工不休假,下屬可選擇休或不休
            not_take += max(sub_take, sub_not_take)
        
        return (take, not_take)
    
    take, not_take = dfs(root)
    return max(take, not_take)

時間複雜度: O(n) 空間複雜度: O(h)

🚀 擴展:多層約束

def max_vacation_with_constraints(root, max_consecutive):
    # 處理連續層級約束的實作
    pass

💼 oavoservice 助力

樹形 DP - 狀態定義和轉移 優化技巧 - 記憶化搜尋 擴展能力 - 處理複雜約束

聯繫 oavoservice,專業 DP 面試輔助!


標籤: #Meta #動態規劃 #樹形DP #VO輔助 #面試輔助 #一畝三分地


需要面試真題? 立刻聯繫微信 Coding0201獲得真題