• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

メモ化再帰

date: 2022-11-25 excerpt: メモ化再帰の使い方

tag: メモ化再帰reccursiondp


メモ化再帰の使い方

概要

  • dpの一つの実装形態の一つ
  • dfsで値を埋めていくイメージ
  • pythonであると、リストを使ったdpより少し遅い

具体例

house-robber

  • 連続する2つの値を取れない時
memo = {}
def rec(i, nums):
    if i >= len(nums):
        return 0
    if i in memo:
        return memo[i]
    # 配る
    ans = max(rec(i + 1, nums), rec(i + 2, nums) + nums[i])
    # 結果をメモ
    memo[i] = ans
    return ans

assert rec(0, [2,7,9,3,1]) == 12

参考

  • 198. House Robber/LeetCode


メモ化再帰reccursiondp Share Tweet