题目传送门

题意:给出每个矩阵的行列,计算矩阵的表达式,如果错误输出error,否则输出答案

分析:表达式求值,stack 容器的应用:矩阵的表达式求值A 矩阵是a * b,B 矩阵是b * c,则A * B 是a * c。遇到')'弹出两个矩阵相乘,错误的话直接break

收获:以前做过了,现在会表达式求值后,这题也太容易了

代码:

/************************************************
* Author        :Running_Time
* Created Time  :2015-8-29 10:22:51
* File Name     :UVA_442.cpp************************************************/#include <cstdio>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <bitset>
#include <cstdlib>
#include <ctime>
using namespace std;#define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
typedef long long ll;
const int N = 1e5 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
struct Martrix  {int a, b;Martrix (int _a = 0, int _b = 0) : a (_a), b (_b) {};
}m[26];int main(void)    {int n;string name;cin >> n;for (int i=1; i<=n; ++i)  {cin >> name; int k = name[0] - 'A';cin >> m[k].a >> m[k].b;}string exp;stack<Martrix> S;while (cin >> exp)    {bool error = false;int ans = 0;int len = exp.length ();for (int i=0; i<len; ++i)  {if ('A' <= exp[i] && exp[i] <= 'Z')    S.push (m[exp[i]-'A']);else if (exp[i] == ')')    {Martrix m1 = S.top ();    S.pop ();Martrix m2 = S.top ();    S.pop ();if (m2.b != m1.a) {error = true; break;}ans += m2.a * m2.b * m1.b;S.push (Martrix (m2.a, m1.b));}}if (error)   cout << "error" << endl;else  cout << ans << endl;}return 0;
}

转载于:https://www.cnblogs.com/Running-Time/p/4442622.html

stack UVA 442 Matrix Chain Multiplication相关推荐

  1. Uva 442 - Matrix Chain Multiplication(模拟)

    题目链接 https://cn.vjudge.net/problem/UVA-442 [题意] 输入n个矩阵的维度和一些矩阵链乘表达式,输出乘法次数.如果乘法无法执行,输出error.假定A是m×n矩 ...

  2. C++matrix chain multiplication矩阵链乘法算法的实现(附完整源码)

    C++lmatrix chain multiplication矩阵链乘法算法的实现 C++matrix chain multiplication矩阵链乘法算法的实现的完整源码(定义,实现,main函数 ...

  3. UVA - 442:Matrix Chain Multiplication

    题目链接:https://vjudge.net/problem/UVA-442 题目分析 题目的意思非常简单,就是给定一个矩阵乘法的表达式然后计算就可以了.随便写写 AC代码 #include < ...

  4. Matrix Chain Multiplication UVA - 442

    题目链接 题意:输入n个矩阵的维度和一些矩阵链乘表达式,输出乘法次数.如果乘法无法进行,输出errror.假定A是m*n,B是n*p矩阵,那么AB是m*p矩阵,乘法次数为m*n*p.如果A的列数不等于 ...

  5. Matrix Chain Multiplication (堆栈)

    题目链接:https://vjudge.net/problem/UVA-442 题目大意:输入n个矩阵的维度和一些矩阵链乘表达式,输出乘法的次数.如果乘法无法进行,输出error. 假定A是m*n的矩 ...

  6. POJ2246 HDU1082 ZOJ1094 UVA442 Matrix Chain Multiplication题解

    代码来源:DeathYmz AC的C++语言程序如下: #include<iostream> #include<cstdio> #include<cstring> ...

  7. UVa-442-Matrix Chain Multiplication

    题目:UVa 442 Matrix Chain Multiplication 题目分析: 关键是解析表达式,可以用栈来解决:遇到字母时入栈,遇到右括号时出栈并且计算,然后结果入栈.因为输入保证合法,括 ...

  8. 30行代码AC——例题6-3 矩阵链乘(Maxtrix Chain Multiplication, UVa 442)——解题报告

    励志用尽量少的代码做高效的表达. 题目(提交)链接→UVa-442 储备知识: 矩阵相乘次数: 如图:A矩阵*B矩阵得到C矩阵. C矩阵中元素个数=A矩阵行数*B矩阵列数.得到C矩阵中任意元素都需要运 ...

  9. ZOJ-1094-Matrix Chain Multiplication

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1094 编程任务:对于给定的矩阵相乘顺序,计算矩阵相乘的乘法次数. 注:题目 ...

最新文章

  1. 应届生程序员,业务和技术孰轻孰重,如何找到适合自己的方向
  2. Attempt to present vc on vc which is already presenting vc/(null)
  3. jquery的动画学习--jquery权威指南
  4. 前端学习(1557):安全问题
  5. linux修图,修图只知道Photoshop?11款高逼格修图工具快来get!
  6. 一文带你 GNN 从入门到起飞,做一个饭盆最稳 GNN 饭人!
  7. 旷视高调进军AIoT!先砸20亿建智能物流生态,发布机器人协作大脑河图
  8. docker安装jdk8
  9. Pandas速查手册中文版
  10. 正态分布某一点的概率怎么算_正态分布的抽卡概率算法
  11. 快速下载网页全部图片的方法
  12. 前端canvas图片压缩原理解析
  13. 【寒江雪】Go实现状态模式
  14. 服务器虚拟化厂商有哪些,国内外厂商的桌面虚拟化产品
  15. 免费物流快递单号查询接口快速对接(顺丰、韵达、申通、中通)
  16. 《黑白团团队》第八次团队作业:Alpha冲刺 第一天
  17. 计算机开模拟器,低配电脑如何强制开50个安卓模拟器挂机
  18. 百度搜索引擎结果网址参数 搜索框提示词搜索方式(rsv_sug2)
  19. 广州移动MGV3001_ZG_S905L3_UWE5621DS_线刷固件包
  20. 取消wps右键菜单_wps自动生成论文目录出现错误怎么办

热门文章

  1. PetShop 4.0讨论专贴(QA)
  2. 2016设置方框的尺寸_四种模板脚手架分类、优缺点及参数设置对比
  3. dbm,dbi,dbd,db,dbc的区别是什么
  4. java8 并行执行方法_如何在Java8中执行此并行任务
  5. 交互式python shell
  6. 手动制作自己想的语谱图
  7. Bucking the stigma (留学生请摘掉有色眼镜看社区大学)
  8. docker的学习笔记(一)-一些基本的命令的学习
  9. RHEL 5服务篇—使用Apache搭建web服务(四)部署AWStats网站分析系统
  10. 交通优化需求下 智能交通已达千亿市场