1
var scoreOfStudents = function (s, answers) {
2
let correct = s
3
.split("+")
4
.reduce((a, c) => a + c.split("*").reduce((b, d) => b * d, 1), 0),
5
n = s.length,
6
dp = [...Array(n)].map((d) => [...Array(n)]);
7
let dfs = (i = 0, j = n - 1) => {
8
if (dp[i][j] !== undefined) return dp[i][j];
9
if (i === j) return (dp[i][j] = [Number(s[i])]);
10
let ans = new Set();
11
for (let k = i + 1; k <= j - 1; k += 2)
12
for (let a1 of dfs(i, k - 1))
13
for (let a2 of dfs(k + 1, j))
14
if (s[k] === "*") ans.add(Number(a1) * Number(a2));
15
else ans.add(Number(a1) + Number(a2));
16
return (dp[i][j] = Array.from(ans).filter((d) => d <= 1000));
17
};
18
dfs();
19
dp[0][n - 1] = new Set(dp[0][n - 1]);
20
return answers.reduce(
21
(a, c) => a + (c === correct ? 5 : dp[0][n - 1].has(c) ? 2 : 0),
22
0
23
);
24
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0