2 houses × 3 colours · dp[i][c] = cheapest with house i = colour c
·
·
·
·
·
·
Naive · scan all other colours
▸1dp[0] = costs[0]2for i in 1..n−1:3 for c in 0..k−1:4 m = min(dp[i−1][c'] for c' != c) // O(k) scan5 dp[i][c] = costs[i][c] + m67return min(dp[n−1])
state
- costs[0][1, 5, 3]
- costs[1][2, 9, 4]
- k3
- statedp[i][c] = cheapest, house i = colour c