跳到主要内容

2312.卖木头块

链接:2312.卖木头块
难度:Hard
标签:记忆化搜索、数组、动态规划
简介:请你返回切割一块大小为 m x n 的木块后,能得到的 最多 钱数。

题解 1 - python

  • 编辑时间:2024-03-15
  • 执行用时:6046ms
  • 内存消耗:38.27MB
  • 编程语言:python
  • 解法介绍:dfs。
class Solution:
def sellingWood(self, m: int, n: int, prices: List[List[int]]) -> int:
price_map = {}
for k1, k2, price in prices:
if k1 not in price_map: price_map[k1] = {}
item_map = price_map[k1]
if k2 not in item_map: item_map[k2] = price
@cache
def dfs(m: int, n: int) -> int:
ans = 0
if m in price_map and n in price_map[m]:
ans += price_map[m][n]
for i in range(1, m):
ans = max(ans, dfs(i, n) + dfs(m - i, n))
for i in range(1, n):
ans = max(ans, dfs(m, i) + dfs(m, n - i))
return ans
return dfs(m, n)