Skip to content

Commit c311892

Browse files
authored
Create 1473-paint-house-iii.js
1 parent 8d82c65 commit c311892

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

1473-paint-house-iii.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/**
2+
* @param {number[]} houses
3+
* @param {number[][]} cost
4+
* @param {number} m
5+
* @param {number} n
6+
* @param {number} target
7+
* @return {number}
8+
*/
9+
const minCost = function (houses, cost, m, n, target) {
10+
const dp = Array(m)
11+
.fill(null)
12+
.map(() =>
13+
Array(target)
14+
.fill(null)
15+
.map(() => Array(n + 1).fill(0))
16+
)
17+
function dfs(i, t, p) {
18+
if (i === m && t === 0) {
19+
return 0
20+
} else if (t < 0 || m - i < t || (i === m && t > 0)) {
21+
return Infinity
22+
} else if (p > -1 && dp[i][t][p]) {
23+
return dp[i][t][p]
24+
} else {
25+
let res = Infinity
26+
if (houses[i]) {
27+
const tmp = houses[i] !== p ? 1 : 0
28+
res = dfs(i + 1, t - tmp, houses[i])
29+
} else {
30+
for (let k = 1; k <= n; k++) {
31+
const tmp = k !== p ? 1 : 0
32+
res = Math.min(res, cost[i][k - 1] + dfs(i + 1, t - tmp, k))
33+
}
34+
}
35+
if (p > -1) {
36+
dp[i][t][p] = res
37+
}
38+
return res
39+
}
40+
}
41+
const answer = dfs(0, target, -1)
42+
return answer === Infinity ? -1 : answer
43+
}

0 commit comments

Comments
 (0)