29 lines
812 B
TypeScript
29 lines
812 B
TypeScript
export {};
|
|
const inst: number[] = require("fs").readFileSync(0).toString().trim().split(" ").map(Number);
|
|
const steps: number = inst.length - 1;
|
|
|
|
const force: number[][] = [
|
|
[1,2,2,2,2],
|
|
[0,1,3,4,3],
|
|
[0,3,1,3,4],
|
|
[0,4,3,1,3],
|
|
[0,3,4,3,1]
|
|
];
|
|
|
|
let dp: number[][][] = Array.from({length: inst.length-1}, () => Array.from({length: 5}, () => new Array(5).fill(0)));
|
|
|
|
const solve = (step: number, left: number, right: number): number => {
|
|
if (step === steps) return 0;
|
|
|
|
if (dp[step][left][right] === 0) {
|
|
const next: number = inst[step];
|
|
dp[step][left][right] = Math.min(
|
|
solve(step+1, next, right) + force[left][next],
|
|
solve(step+1, left, next) + force[right][next]
|
|
);
|
|
};
|
|
|
|
return dp[step][left][right];
|
|
};
|
|
|
|
console.log(solve(0,0,0)); |