https://vjudge.net/problem/UVA-442

思路:

1)当遇到左括号将字母进栈,遇到右括号将字母出栈。

2)

isalpha() 判断一个字符是否是字母

int isalpha ( int c );

标准 ASCII 编码共包含了 128 个字符,不同的字符属于不同的分类,我们在 <ctype.h> 头文件中给出了详细的列表。

 #include <bits/stdc++.h>
using namespace std;
struct Matrix
{
int a,b;
Matrix(int a=,int b=):a(a),b(b){}
}m[];
stack<Matrix>s;
int main()
{
int n;
cin>>n;
for(int i=;i<n;i++)
{
string name;
cin>>name;
int k=name[]-'A';
cin>>m[k].a>>m[k].b;
}
string expr;
while(cin>>expr)
{
int len=expr.length();
bool error=false;
int ans=;
for(int i=;i<len;i++)
{
if(isalpha(expr[i]))
s.push(m[expr[i]-'A']);
else if(expr[i]==')')
{
Matrix m1=s.top();
s.pop();
Matrix m2=s.top();
s.pop();
if(m1.a!=m2.b)
{
error=true;
break;
}
ans+=m1.b*m2.a*m2.b;
s.push(Matrix(m2.a,m1.b));
}
}
if(error)
cout<<"error"<<endl;
else
cout<<ans<<endl;
}
return ;
}

Uva442的更多相关文章

  1. UVa442 Matrix Chain Multiplication

    // UVa442 Matrix Chain Multiplication // 题意:输入n个矩阵的维度和一些矩阵链乘表达式,输出乘法的次数.假定A和m*n的,B是n*p的,那么AB是m*p的,乘法 ...

  2. Uva442 hdu 1082 Matrix Chain Multiplication

    要注意取出来的时候 先取出q的是后面那个矩阵 后取出p的是前面的矩阵 所以是判断 p.a == q.b #include <iostream> #include <stack> ...

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

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

  4. UVA442 Matrix Chain Multiplication 矩阵运算量计算(栈的简单应用)

    栈的练习,如此水题竟然做了两个小时... 题意:给出矩阵大小和矩阵的运算顺序,判断能否相乘并求运算量. 我的算法很简单:比如(((((DE)F)G)H)I),遇到 (就cnt累计加一,字母入栈,遇到) ...

  5. UVA442 栈

    C - Matrix Chain Multiplication Crawling in process... Crawling failed Time Limit:3000MS     Memory ...

  6. uva-442 Matrix Chain Multiplication

    Suppose you have to evaluate an expression like A*B*C*D*E where A,B,C,D and E are matrices. Since ma ...

  7. UVa442 Matrix Chain Multiplication(栈)

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

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

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

  9. UVA442 矩阵链乘 Matrix Chain Multiplication

    题意: 这道题也是在不改变原序列每个元素位置的前提下,看每个元素与他身边的两个元素那个先结合能得到最大的能量 题解: 很明显这是一道区间dp的题目,这道题要断环成链,这道题需要考虑在这个区间上某个元素 ...

随机推荐

  1. Vue双向绑定原理详解

    前言:Vue最核心的功能之一就是响应式的数据绑定模式,即view与model任意一方改变都会同步到另一方,而不需要手动进行DOM操作,本文主要探究此功能背后的原理. 思路分析 以下是一个最简单的双向绑 ...

  2. HTML学习笔记《一》 ---- HTML基本认识

    HTML 基本认识 一.简介 1.HTML是超文本标记语言,标准通用标记语言下的一个应用,解释性语言. 2.“超文本”就是指页面内可以包含图片.链接,甚至音乐.程序等非文字元素. 3.超文本标记语言的 ...

  3. 转 mysqli 事务常用方法

    原文:mysqli 事务常用方法 1. //打开(true)或关闭(false)本次数据库连接的自动命令提交事务模式 //参数如果设置为 FALSE,则表示关闭 auto-commit.如果设置为 T ...

  4. js和jquery中获取非行间样式

    样式又分为了行间样式和非行间样式.一般来说行间样式用的是比较少的,因为它能够作用的范围就只有一个元素,而非行间样式的作用范围可以是一类元素(即拥有相同德标签,或者说是有相同的类名,(当然id名不可能相 ...

  5. mvp 在 flutter 中的应用

    在 Android 应用程序开发过程中,我们经常会用到一些所谓的架构方法,如:mvp,mvvm,clean等.之所以这些方法会被推崇是因为他们可以大大的解耦我们的代码的功能模块,让我们的代码在项目中后 ...

  6. Eclipse Ctrl + H 搜索文件不覆盖已打开文件解决办法

    1.windows------->preferences

  7. maven 配置jdk版本编译

    在maven的默认配置中,对于jdk的配置是1.4版本,那么创建/导入maven工程过程中,工程中未指定jdk版本. 对工程进行maven的update,就会出现工程依赖的JRE System Lib ...

  8. Linux pyenv环境安装

    python工作环境管理 pyenv安装: git clone https://github.com/pyenv/pyenv ~/.pyenv echo 'export PYENV_ROOT=&quo ...

  9. 在虚拟机中安装ubuntu16.04后不能全屏显示

    一.在终端输入:xrandr 二.输入:xrandr -s 1920x1440 参考网站:https://blog.csdn.net/qq_33202928/article/details/75021 ...

  10. ubuntu密码正确,却不能登录图形界面

    传统的方法是修改.Xauthority文件权限,不过我试了没有用. 后来发现我的问题是因为安装了NVIDIA cuda驱动而导致的. 所以先卸载nvidia驱动,再更新,就可以正常进入了. 命令: s ...