1473. Paint House III
https://leetcode.com/problems/paint-house-iii/
from functools import lru_cache
class Solution:
def minCost(self, houses: List[int], cost: List[List[int]], m: int, n: int, target: int) -> int:
@lru_cache(None)
def dp(i,color,partition):
if partition > target:
return float("inf")
if i == m:
if partition == target:
return 0
else:
return float("inf")
if houses[i]:
return dp(i+1,houses[i],partition+(houses[i] != color))
res = float("inf")
for c, currCost in enumerate(cost[i],1):
res = min(res,currCost + dp(i+1,c,partition + (c != color)))
return res
ans = dp(0,0,0)
if ans == float("inf"):
return -1
return ansLast updated