1function stoneMerge(stones) {
2 const n = stones.length;
3 const prefix = new Array(n + 1).fill(0);
4 for (let i = 0; i < n; i++)
5 prefix[i + 1] = prefix[i] + stones[i];
6 const dp = Array.from({ length: n }, () => new Array(n).fill(0));
7 for (let len = 2; len <= n; len++) {
8 for (let l = 0; l + len - 1 < n; l++) {
9 const r = l + len - 1;
10 dp[l][r] = Infinity;
11 for (let k = l; k < r; k++)
12 dp[l][r] = Math.min(dp[l][r], dp[l][k] + dp[k+1][r]);
13 dp[l][r] += prefix[r + 1] - prefix[l];
14 }
15 }
16 return dp[0][n - 1];
17}