“Matrix chain multiplication”的版本间的差异

来自wrc's Wiki
跳到导航 跳到搜索
(建立内容为“Category:刷题 Category:动态规划 矩阵链乘法,找出进行操作最少的加括号方式。使用动态规划求解,利用分治的思想。…”的新页面)
 
 
第11行: 第11行:
 
=== [https://leetcode.com/problems/burst-balloons/description/ LeetCode 312. Burst Balloons] ===
 
=== [https://leetcode.com/problems/burst-balloons/description/ LeetCode 312. Burst Balloons] ===
  
等价于一个矩阵链乘问题。
+
等价于一个矩阵链乘问题。<ref>https://leetcode.com/problems/burst-balloons/discuss/1450284/Classic-Matrix-Chain-Multiplication-with-a-minor-tweak.-Very-easy!!-(C%2B%2B)</ref>
  
 
<syntaxhighlight lang=python>
 
<syntaxhighlight lang=python>

2021年9月10日 (五) 21:20的最新版本

矩阵链乘法,找出进行操作最少的加括号方式。使用动态规划求解,利用分治的思想。

对于乘法 ABCD,取 A(BCD), (AB)(CD), (ABC)D 三种情况的最小值,子问题递归求解。

[1]

相关题目

LeetCode 312. Burst Balloons

等价于一个矩阵链乘问题。[2]

from functools import cache


def maxCoins(self, nums: List[int]) -> int:
    nums.insert(0, 1)
    nums.append(1)

    @cache
    def rec(left, right):
        if left >= right:
            return 0
        return max((rec(left, i) + rec(i + 1, right) + nums[left - 1] * nums[i] * nums[right])
                   for i in range(left, right))
    return rec(1, len(nums) - 1)

参考资料