Dynamic Programming21 sections · 916 units
Open in Course

LeetCode 464 Can I Win - Walkthrough

Tracing with bitmask

Pool of integers 11 to nn. Players pick unused numbers. First to reach sum target\geq target wins. Can Player 1 guarantee a win? State: bitmask of used numbers. dp[mask]dp[mask] = true if current player can win from this state. Example: n=4n=4, target=6target=6. From empty mask, try 11, 2, 3, or 4.

If taking 4 doesn't win immediately, check if opponent loses from resulting mask. Current sum is computed from mask. If sum+picktargetsum + pick \geq target, current player wins. Else, recurse and check if any pick leads to opponent's loss.