28 lines
824 B
TypeScript
28 lines
824 B
TypeScript
import { start } from "repl";
|
|
|
|
export {};
|
|
const input = require("fs").readFileSync(0).toString().trim().split("\n");
|
|
|
|
const N: number = Number(input[0]);
|
|
let rc: number[][] = []
|
|
for(let i=1; i<=N; i++) rc.push(input[i].split(" ").map(Number));
|
|
|
|
let dp: number[][] = Array.from({length : N}, () => new Array(N).fill(0));
|
|
|
|
for(let len=2; len<=N; len++) {
|
|
for(let start=0; start<=N-len; start++) {
|
|
const end: number = start + len - 1;
|
|
dp[start][end] = Number.MAX_VALUE;
|
|
|
|
|
|
for(let k=start; k<end; k++) {
|
|
const leftOp: number = dp[start][k];
|
|
const rightOp: number = dp[k+1][end];
|
|
const mergeOp: number = rc[start][0]*rc[k][1]*rc[end][1];
|
|
|
|
dp[start][end] = Math.min(dp[start][end], leftOp + rightOp + mergeOp);
|
|
}
|
|
}
|
|
}
|
|
|
|
console.log(dp[0][N-1]); |