Skip to content

Commit b7a0c4e

Browse files
authored
Create 1429-build-array-where-you-can-find-the-maximum-exactly-k-comparisons.js
1 parent 5aa5218 commit b7a0c4e

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* @param {number} n
3+
* @param {number} m
4+
* @param {number} k
5+
* @return {number}
6+
*/
7+
const numOfArrays = function (n, m, k) {
8+
const mod = 1e9 + 7;
9+
const dp = [];
10+
for (let i = 0; i <= n; i++) {
11+
dp[i] = [];
12+
for (let j = 0; j <= m; j++) {
13+
dp[i][j] = [];
14+
}
15+
}
16+
// i: length; j: max; c: cost
17+
function f(i, j, c) {
18+
if (dp[i][j][c] !== undefined) return dp[i][j][c];
19+
if (c > i || c > j || c === 0) return (dp[i][j][c] = 0);
20+
if (i === 1 && c === 1) return (dp[i][j][c] = 1);
21+
let res = 0;
22+
// ... (j)
23+
for (let b = 1; b < j; b++) {
24+
res = (res + f(i - 1, b, c - 1)) % mod;
25+
}
26+
// ... (1 -> j)
27+
res = (res + f(i - 1, j, c) * j) % mod;
28+
return (dp[i][j][c] = res);
29+
}
30+
let res = 0;
31+
for (let b = 1; b <= m; b++) {
32+
res = (res + f(n, b, k)) % mod;
33+
}
34+
return res;
35+
};

0 commit comments

Comments
 (0)