UVa 442 Matrix Chain Multiplication(栈的应用)
题目链接:
https://cn.vjudge.net/problem/UVA-442
/*
问题
输入有括号表示优先级的矩阵链乘式子,计算该式进行的乘法次数之和 解题思路
栈的应用,直接忽视左括号,每次只计算栈顶的两个矩阵会更加方便。
*/
#include<cstdio>
#include<cstring>
#include<stack>
#include<cctype>
using namespace std;
struct MAT{
int r,c;
}mat[]; char exp[];
stack<MAT> s;
int main()
{
//freopen("E:\\testin.txt","r",stdin);
char tc;
int t1,t2,n,i;
while(scanf("%d",&n) != EOF){
for(i=;i<;i++){
mat[i].r=;
mat[i].c=;
}
for(i=;i<n;i++){
scanf(" %c%d%d",&tc,&t1,&t2);
mat[tc-'A'].r=t1;
mat[tc-'A'].c=t2;
} while(scanf(" %s",exp) != EOF){
long long ans=;
int err=;
int len=strlen(exp);
for(i=;i<len;i++){
if(isalpha(exp[i])){
s.push(mat[exp[i]-'A']);
}else if(exp[i] == ')'){
struct MAT m2=s.top();s.pop();
struct MAT m1=s.top();s.pop();
if(m1.c != m2.r){
err=;
break;
}
ans += m1.r*m2.r*m2.c;
struct MAT tmp;
tmp.r=m1.r;
tmp.c=m2.c;
s.push(tmp);
}
} if(err)
printf("error\n");
else
printf("%lld\n",ans);
while(!s.empty()){
s.pop();
}
}
}
return ;
}
UVa 442 Matrix Chain Multiplication(栈的应用)的更多相关文章
- UVA——442 Matrix Chain Multiplication
		442 Matrix Chain MultiplicationSuppose you have to evaluate an expression like A*B*C*D*E where A,B,C ... 
- UVa 442 Matrix Chain Multiplication(矩阵链,模拟栈)
		意甲冠军 由于矩阵乘法计算链表达的数量,需要的计算 后的电流等于行的矩阵的矩阵的列数 他们乘足够的人才 非法输出error 输入是严格合法的 即使仅仅有两个相乘也会用括号括起来 并且括号中 ... 
- UVA - 442 Matrix Chain Multiplication(栈模拟水题+专治自闭)
		题目: 给出一串表示矩阵相乘的字符串,问这字符串中的矩阵相乘中所有元素相乘的次数. 思路: 遍历字符串遇到字母将其表示的矩阵压入栈中,遇到‘)’就将栈中的两个矩阵弹出来,然后计算这两个矩阵的元素相乘的 ... 
- stack UVA 442 Matrix Chain Multiplication
		题目传送门 题意:给出每个矩阵的行列,计算矩阵的表达式,如果错误输出error,否则输出答案 分析:表达式求值,stack 容器的应用:矩阵的表达式求值A 矩阵是a * b,B 矩阵是b * c,则A ... 
- UVa442 Matrix Chain Multiplication(栈)
		#include<cstdio>#include<cstring> #include<stack> #include<algorithm> #inclu ... 
- 例题6-3 Matrix Chain Multiplication ,Uva 442
		这个题思路没有任何问题,但还是做了近三个小时,其中2个多小时调试 得到的经验有以下几点: 一定学会调试,掌握输出中间量的技巧,加强gdb调试的学习 有时候代码不对,得到的结果却是对的(之后总结以下常见 ... 
- UVA 442	二十 Matrix Chain Multiplication
		Matrix Chain Multiplication Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %l ... 
- Matrix Chain Multiplication(表达式求值用栈操作)
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1082 Matrix Chain Multiplication Time Limit: 2000/100 ... 
- ACM学习历程——UVA442 Matrix Chain Multiplication(栈)
		Description Matrix Chain Multiplication Matrix Chain Multiplication Suppose you have to evaluate ... 
随机推荐
- SRM466
			250pt: 给出一个数n(n <= 10^10),问至少修改几位能使其变成完全平方数. 思路: 直接枚举平方根,然后统计. 注意枚举时要枚举到比她大.. #line 7 &qu ... 
- UIKit Dynamic主题学习笔记
			1.重力效果:UIGravityBehavior @IBOutlet weak var frogImage: UIImageView! //创建一个关联到view的动画(必须为全局变量) lazy v ... 
- 我最常用的7个Web在线工具
			为什么要用Web在线工具呢?有两个原因,第一,它不受限于物理平台,我既可以在自己的电脑上使用,也可以在公司或亲戚朋友的电脑上使用(不管对方的操作系统是什么,只要能上网):第二,可以解放硬盘,减少PC端 ... 
- python threading模块
			#coding=utf-8 import threading from time import ctime,sleep def music(func): for i in range(2): prin ... 
- VS2015中不同开发环境设置转换(C#->C++等)
			backup VS2015 社区版(Community)下载地址:迅雷下载:ed2k://|file|cn_visual_studio_community_2015_x86_dvd_6847368.i ... 
- WPF用户控件库  嵌入外部(VLC)exe
			综合网上资源完成的自己的第一篇博客 ------------------------------------------------------------------------ 网上类似的贴子挺多 ... 
- 【BZOJ4819】 新生舞会(01分数规划,费用流)
			Solution 考虑一下这个东西的模型转换: \(\frac{\sum_{i=1}^n{a_i}}{\sum_{i=1}^n{b_i}}\) 然后转换一下发现显然是01分数规划. \(\sum_{i ... 
- Spring Cloud实践之服务注册与发现Eureka
			一.简述: 服务提供者producer与服务消费者consumer都注册到eureka server,然后服务consumer在其应用内直接调用producer的服务名来调用服务,而不是像之前一样调用 ... 
- JQuery -  on绑定多个事件
			一.jquery为多个选择器绑定同一个事件 $("#start,#end").on("click",function(){ alert("The pa ... 
- Windows安装python3.x后,pip list警告!DEPRECATION: The default format will switch to columns in the future.
			前言(凑字数专用) 这个警告虽然不影响你的正常使用,但是每次都好几行红色警告,总是给人一种怪怪的感觉(当然不是FBI的警告了……),所以咱们还是把他解决掉~ 网上好多解决办法都是Ubuntu的解决办法 ... 
