Menu
CoddyTech

Matrix Chain Multiplication

困难动态规划python iconjava iconcpp iconc iconjs icon+10

矩阵链由 dims 描述:矩阵 i 有 dims[i] 行和 dims[i+1] 列,因此每个矩阵都能与下一个矩阵相乘。将一个 p × q 矩阵乘以一个 q × r 矩阵,需要进行 p × q × r 次标量乘法,结果是一个 p × r 矩阵。无论怎样放置括号,最终乘积都相同,但计算成本并不相同。返回将整个矩阵链相乘所需的最少标量乘法次数。

函数

matrixChainOrder(dims: integer-array) → integer
dimsinteger-array
链上的尺寸:矩阵 i 的维度为 dims[i] × dims[i+1]
返回值integer
将整个矩阵链相乘所需的最少标量乘法次数

约束条件

  • 2 ≤ dims.length ≤ 100,因此这条链包含 1 到 99 个矩阵。
  • 1 ≤ dims[i] ≤ 100
  • 答案最大为 98 × 106,远小于 32 位有符号整数的范围。

示例

输入
dims = [4, 10, 3, 12]
输出
264
解释
先将前两个矩阵相乘,运算量为 4 × 10 × 3 = 120,得到一个 4 × 3 矩阵;再将它与 3 × 12 矩阵相乘,运算量增加 144:总计 264。另一种顺序的运算量为 360 + 480 = 840。
challenge icon

进阶

你还能计算出有多少种不同的加括号方式可以达到最小成本吗?

重置代码
def matrixChainOrder(dims):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

dims = [4, 10, 3, 12]

预期输出

264