社区讨论

题目翻译

UVA442矩阵链乘 Matrix Chain Multiplication参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mi6u7yj8
此快照首次捕获于
2025/11/20 10:54
4 个月前
此快照最后确认于
2025/11/20 10:54
4 个月前
查看原帖
CPP

## 矩阵链乘

### 题目描述

​  假设你必须评估一种表达形如 A*B*C*D*E,其中 A,B,C,D,E是矩阵。既然矩阵乘法是关联的,那么乘法的顺序是任意的。然而,链乘的元素数量必须由你选择的赋值顺序决定。

​  例如,A,B,C分别是 50 * 1010 * 2020 * 5 的矩阵。现在有两种方案计算 A * B * C ,即(A * B) * C 和 A*(B * C)。  
   第一个要进行15000次基本乘法,而第二个只进行3500次。

​  你的任务就是写出一个程序判定以给定的方式相乘需要多少次基本乘法计算。

### 输入格式

​  输入包含两个部分:矩阵和表达式。 
   输入文件的第一行包含了一个整数 n(1 $\leq$ n $\leq$ 26), 代表矩阵的个数。接下来的n行每一行都包含了一个大写字母,说明矩阵的名称,以及两个整数,说明行与列的个数。  
   第二个部分严格遵守以下的语法:

SecondPart = Line {  Line  } <EOF>
Line       = Expression <CR>
Expression = Matrix | "(" Expression Expression ")"
Matrix     = "A" | "B" | "C" | ... | "X" | "Y" | "Z"


###输出格式

​  对于每一个表达式,如果乘法无法进行就输出 " error "。否则就输出一行包含计算所需的乘法次数。 

回复

2 条回复,欢迎继续交流。

正在加载回复...