baekjoon 20260325
This commit is contained in:
parent
ce51918114
commit
bbff86fc50
36
code_study/Baekjoon/ts/2098.ts
Normal file
36
code_study/Baekjoon/ts/2098.ts
Normal file
@ -0,0 +1,36 @@
|
||||
export {};
|
||||
const input = require("fs").readFileSync(0).toString().trim().split("\n");
|
||||
const inf: number = 1e9;
|
||||
|
||||
const N: number = Number(input[0]);
|
||||
|
||||
let W: number[][] = [];
|
||||
for(let i=1; i<=N; i++) {
|
||||
W.push(input[i].split(" ").map(Number));
|
||||
}
|
||||
|
||||
let dp: number[][] = Array.from({length: N}, () => new Array(1<<N).fill(0));
|
||||
|
||||
const travel = (current: number, visited: number): number => {
|
||||
if(visited === ((1<<N) - 1)) {
|
||||
if(W[current][0] !== 0) return W[current][0];
|
||||
return inf;
|
||||
}
|
||||
|
||||
if(dp[current][visited] === 0) {
|
||||
let min_cost: number = inf;
|
||||
|
||||
for(let next = 0; next <N; next++) {
|
||||
if(W[current][next] === 0 || (visited & (1 << next))) continue;
|
||||
|
||||
const cost: number = W[current][next] + travel(next, (visited | (1 << next)));
|
||||
min_cost = Math.min(cost, min_cost);
|
||||
}
|
||||
|
||||
dp[current][visited] = min_cost;
|
||||
}
|
||||
|
||||
return dp[current][visited];
|
||||
};
|
||||
|
||||
console.log(travel(0,1));
|
||||
Loading…
x
Reference in New Issue
Block a user