ALGORITHM VISUAL DEBUGGER

アルゴリズム可視化ラボ

実行をイベント列として記録し、任意のステップへ進む・戻ることができるビジュアルデバッガです。

演習トップへ戻る

同じ (i, w) の呼び出し結果をメモに保存し、再訪時は計算せず即座に返します。青いノードがメモヒットです。 重複の多い配列(例:1 が並ぶ)ほど効果が分かりやすくなります。

step 0 / 18
選ばない選ばない選ばない選ぶ −1選ばない選ぶ −1選ばない選ぶ −1f(4, 2)f(3, 2)f(2, 2)f(1, 2)f(0, 2)f(0, 1)f(1, 1)f(0, 1)f(0, 0)
実行中のコード行
const memo = new Map<string, boolean>();
function func(i: number, w: number, a: number[]): boolean {
const key = `${i},${w}`;
if (memo.has(key))
return memo.get(key)!; // メモヒット!
let res: boolean;
if (i === 0) res = (w === 0);
else if (func(i - 1, w, a)) res = true;
else if (func(i - 1, w - a[i-1], a)) res = true;
else res = false;
memo.set(key, res); // 結果を保存
return res;
}
メモテーブル(0 件)
まだ空です
コールスタック(深さ 0)
未開始