假设你必须做A*B*C*D*E的运算,在这里A,B,C,D,E都是矩阵(matrix)。由于矩阵相乘具有连接性(associative),所以相乘的顺序可以是任意的。然而所需要的基本乘法数却与不尽相同。

例如:A是个50*10的矩阵,B是个10*20的矩阵,C是个20*5的矩阵。那么就有2种不同的表示式来求出A*B*C。分别是(A*B)*C和A*(B*C)。而其所需用到的基本乘法数前者为15000次,后者为3500次。

给你某一种矩阵相乘的表示式,你的任务是写一个程序算出需要多少个基本乘法。

Input
输入分为2部分。第一部份为矩阵的数据,第二部分为矩阵相乘的表示式。
第一列有一个整数n(1<= n <= 26),代表在输入的第一部份有多少个矩阵。接下来的n列每列为一矩阵的数据。内容为1个大写英文字母及2个整数,分别代表矩阵的名字,栏数(rows)及列数(columns)。
输入的第二部分每列为一测试数据,内容为矩阵相乘的表示式。表示式严格的遵守以下的语法(以EBNF的形式)
SecondPart = Line { Line } <EOF>
Line = Expression <CR>
Expression = Matrix |“(”Expression Expression“)”
Matrix =“A”|“B”|“C”|…|“X”|“Y”|“Z”
请参考Sample Input。

Output
对输入第二部分的每组测试数据输出一列。如果该表示式为不合法的矩阵相乘,则输出error。否则请输出此表示式所需的乘法次数。请参考Sample Output。

Sample 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))

Sample Output

0
0
0
error
10000
error
3500
15000
40500
47500
15125

6_3 矩阵链乘(UVa424)<用栈实现简单的表达式解析>的更多相关文章

  1. 【UVa-442】矩阵链乘——简单栈练习

    题目描述: 输入n个矩阵的维度和一些矩阵链乘表达式,输出乘法的次数.如果乘法无法进行,输出error. Sample Input 9 A 50 10 B 10 20 C 20 5 D 30 35 E ...

  2. COJ 0016 20603矩阵链乘

    传送门:http://oj.cnuschool.org.cn/oj/home/solution.htm?solutionID=35454 20603矩阵链乘 难度级别:B: 运行时间限制:1000ms ...

  3. POJ1260 Pearls(dp,矩阵链乘法)

    题目链接. 题目大意: 给定一个n,和两个序列a[i], p[i]. a[i] 表示需要购买 i品质 的数量,p[i] i 等级的价格. 1.每个品质都会有不同的价格,价格依据品质上升而上升 2.买一 ...

  4. Algorithm --> 矩阵链乘法

    动态规划--矩阵链乘法 1.矩阵乘法       Note:只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义.一个m×r的矩阵A左乘一个r×n的矩阵B,会得到一个m×n的矩阵C. #include ...

  5. CODEVS 3546 矩阵链乘法

    http://codevs.cn/problem/3546/ 题目 给定有n个要相乘的矩阵构成的序列(链)<A1,A2,A3,.......,An>,要计算乘积A1A2.....An.一组 ...

  6. UVa 10003 切木棍(区间DP+最优矩阵链乘)

    https://vjudge.net/problem/UVA-10003 题意: 有一根长度为L的棍子,还有n个切割点的位置.你的任务是在这些切割点的位置处把棍子切成n+1部分,使得总切割费用最小.每 ...

  7. (最大矩阵链乘)Matrix-chain product

    Matrix-chain product. The following are some instances. a)       <3, 5, 2, 1,10> b)       < ...

  8. POJ1651 Multiplication Puzzle —— DP 最优矩阵链乘 区间DP

    题目链接:https://vjudge.net/problem/POJ-1651 Multiplication Puzzle Time Limit: 1000MS   Memory Limit: 65 ...

  9. MCM(矩阵链乘法)

    这是<算法导论>动态规划中的一个问题.问题简述如下:我们在求解矩阵相乘时通常会有一个最优括号方案来对矩阵进行顺序相乘,这样会减少大量的计算时间. 我们知道矩阵A.B相乘,只能是当矩阵A的列 ...

随机推荐

  1. mybatis(五):源码分析 - mapper文件加载流程

  2. ansible笔记(12):变量(一)

    1.定义变量规范 先说说怎样定义变量,变量名应该由字母.数字.下划线组成,变量名需要以字母开头,ansible内置的关键字不能作为变量名. 2.定义变量,使用关键字:vars 定义变量用vars,调用 ...

  3. 【C语言】思维导图

    长按图片或右键另存为保存哦(´-ω-`)

  4. linq和扩展方法

    c#的扩展方法 1.必须是在一个非嵌套.非泛型的静态类中的静态方法 2.至少一个参数,第一个参数附加this,不能有其他修饰符如out.ref 3.第一个参数不能是指针类型 上面例子是自定义的一个扩展 ...

  5. java-日期取特定值

    import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * @author G ...

  6. 番外:克隆本地PDB中其他参数和子句的说明

    基于版本:19c (12.2.0.3) AskScuti 创建方法:克隆本地PDB(从本地其他PDB创建新的PDB) 对应路径:Creating a PDB --> Cloning --> ...

  7. mybatis - @MapperScan

    一. 测试代码 //实体类 public class User { private Integer id; private String name; private Integer age; priv ...

  8. python之路之模块

    subprocess模块 复杂命令 logging模块(重点) 日志模块,线程安全

  9. html表单提交给PHP然后浏览器显示出了PHP的源代码

    今天学习到PHP处理网页表单提交的数据时,碰到一个巨头疼的问题,先贴上案例代码: html表单部分: <html> <head> <meta charset=" ...

  10. EAC3 spectral extension原理

    1.Spectral extension简介 Spectral extension是通过低频的transform coefficients合成高频transform coefficients的过程. ...