Task
Build the canonical House Robber DP: `dp_house_robber(amounts)` returns the max sum of non-adjacent values:
- Cannot pick two indices in a row (alarm wires them together).
- Empty list β 0.
- Single house β its amount.
- General: `dp[i] = max(dp[i-1], dp[i-2] + amounts[i])` β either skip this house or take it plus the best up-to-2-back.
LeetCode #198 β the cleanest demonstration of "1-D DP with 2-step lookback".