题目链接:

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(栈的应用)的更多相关文章

  1. 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 ...

  2. UVa 442 Matrix Chain Multiplication(矩阵链,模拟栈)

    意甲冠军  由于矩阵乘法计算链表达的数量,需要的计算  后的电流等于行的矩阵的矩阵的列数  他们乘足够的人才  非法输出error 输入是严格合法的  即使仅仅有两个相乘也会用括号括起来  并且括号中 ...

  3. UVA - 442 Matrix Chain Multiplication(栈模拟水题+专治自闭)

    题目: 给出一串表示矩阵相乘的字符串,问这字符串中的矩阵相乘中所有元素相乘的次数. 思路: 遍历字符串遇到字母将其表示的矩阵压入栈中,遇到‘)’就将栈中的两个矩阵弹出来,然后计算这两个矩阵的元素相乘的 ...

  4. stack UVA 442 Matrix Chain Multiplication

    题目传送门 题意:给出每个矩阵的行列,计算矩阵的表达式,如果错误输出error,否则输出答案 分析:表达式求值,stack 容器的应用:矩阵的表达式求值A 矩阵是a * b,B 矩阵是b * c,则A ...

  5. UVa442 Matrix Chain Multiplication(栈)

    #include<cstdio>#include<cstring> #include<stack> #include<algorithm> #inclu ...

  6. 例题6-3 Matrix Chain Multiplication ,Uva 442

    这个题思路没有任何问题,但还是做了近三个小时,其中2个多小时调试 得到的经验有以下几点: 一定学会调试,掌握输出中间量的技巧,加强gdb调试的学习 有时候代码不对,得到的结果却是对的(之后总结以下常见 ...

  7. UVA 442 二十 Matrix Chain Multiplication

    Matrix Chain Multiplication Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %l ...

  8. Matrix Chain Multiplication(表达式求值用栈操作)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1082 Matrix Chain Multiplication Time Limit: 2000/100 ...

  9. ACM学习历程——UVA442 Matrix Chain Multiplication(栈)

    Description   Matrix Chain Multiplication  Matrix Chain Multiplication  Suppose you have to evaluate ...

随机推荐

  1. LigerUi中为Grid表加上序号,并调整适当宽度!(实例)

    LigerUi中为Grid表加上序号,并调整适当宽度!(实例) dataAction: 'server', pageSize: 20, toolbar: {},           url: 'ndl ...

  2. bootstrap table 前端搜索

    1.bootstrap-table对于前端的搜索可以通过官网设置,但发现前端搜索出现bug,网上找到一个bootstrap-table的扩充js  bootstrap-table-mytoolbar. ...

  3. UNIGUI接收普通消息和被动回复用户消息

    接收普通消息和被动回复用户消息 用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应(现支持回复 ...

  4. [leet code 198]House Robber

    1 题目 You are a professional robber planning to rob houses along a street. Each house has a certain a ...

  5. Spring与多线程

    前言背景 在做新项目,作为中间件的项目,主要做数据服务.这次想把项目做的简洁一些,之前用的什么ActiveMq等中间件产品,这次全部不用,能自己实现就自己实现.自己用BlockingQueue阻塞队列 ...

  6. Flask restful API如何解决跨站请求问题

    如果像下面这样只是在return的response添加header是不行的: response = make_response(jsonify(response=get_articles(ARTICL ...

  7. 过滤器中获取form表单或url请求数据

    var httpFormData = filterContext.HttpContext.Request.Form; var logContent = string.Empty; //获取url的 l ...

  8. ceph 源码安装 configure: error: "Can't find boost spirit headers"

    问题:configure: error: "Can't find boost spirit headers" 解决: 推荐:sudo apt-get install libboos ...

  9. Python2 指定文件编码格式需要注意的地方

    python2 中默认的编码格式是unicode, 开发人员经常需要根据需要,将python文件的编码格式设置为utf-8,我们可以在python文件的第一行进行设置,加入如下代码: # encodi ...

  10. CSS3标签显示模式

    HTML标签一般分为块标签和行内标签两种类型,它们也称块元素和行内元素.具体如下: 块级元素(block-level) 每个块元素通常都会独自占据一整行或多整行,可以对其设置宽度.高度.对齐等属性,常 ...