矩阵链乘
时间限制:1秒 内存限制:256M
【问题描述】
输入 \(N\) 个矩阵的维度和一些矩阵链乘法表达式,输出乘法的次数,如果表达式无法进行,输出"error"。
假定 \(A\) 是 \(m * n\) 的矩阵,\(B\) 是 \(n * p\) 的矩阵,那么 \(AB\) 是 \(m * p\) 的矩阵,乘法次数为 \(m * n * p\)。如果 \(A\) 的列数不等于 \(B\) 的行数,则乘法无法进行。例如:\(A\) 是 \(50 * 10\) 的矩阵,\(B\) 是 \(10 * 20\) 的矩阵,\(C\) 是 \(20 * 5\) 的矩阵,则 \((A(BC))\) 的乘法次数为 10 * 20 * 5( \(BC\) 的乘法次数)+ 50 * 10 * 5(\((A(BC))\) 的乘法次数) = 3500 次。
【输入格式】
第一行一个整数 \(N\),表示有 \(N\) 个矩阵。
接下来的 \(N\) 行,每行表示一个矩阵的信息:矩阵名称(一个大写字母),行数,列数。节下来的若干行,每行一个矩阵链乘法表达式,表达式一定正确(括号一定配对,且只须按括号对计算)。
【输出格式】
针对输入每个表达式,按输入顺序输出乘法次数或error。
【输入输出样例】
Input
9
A 50 10
B 10 20
C 20 5
D 30 35
E 35 15
F 15 5
G 5 10
H 10 20
I 20 25
A
B
C
(AA)
(AB)
(AC)
(A(BC))
((AB)C)
(((((DE)F)G)H)I)
(D(E(F(G(HI)))))
((D(EF))((GH)I))
Output
0
0
0
error
10000
error
3500
15000
40500
47500
15125
【数据说明】
对于 \(100\%\) 的数据 表达式长度不超过100,且最后的答案不超过10^18。。
【来源】
Mr.he