stack UVA 442 Matrix Chain Multiplication
题目传送门
题意:给出每个矩阵的行列,计算矩阵的表达式,如果错误输出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相关推荐
- Uva 442 - Matrix Chain Multiplication(模拟)
题目链接 https://cn.vjudge.net/problem/UVA-442 [题意] 输入n个矩阵的维度和一些矩阵链乘表达式,输出乘法次数.如果乘法无法执行,输出error.假定A是m×n矩 ...
- C++matrix chain multiplication矩阵链乘法算法的实现(附完整源码)
C++lmatrix chain multiplication矩阵链乘法算法的实现 C++matrix chain multiplication矩阵链乘法算法的实现的完整源码(定义,实现,main函数 ...
- UVA - 442:Matrix Chain Multiplication
题目链接:https://vjudge.net/problem/UVA-442 题目分析 题目的意思非常简单,就是给定一个矩阵乘法的表达式然后计算就可以了.随便写写 AC代码 #include < ...
- Matrix Chain Multiplication UVA - 442
题目链接 题意:输入n个矩阵的维度和一些矩阵链乘表达式,输出乘法次数.如果乘法无法进行,输出errror.假定A是m*n,B是n*p矩阵,那么AB是m*p矩阵,乘法次数为m*n*p.如果A的列数不等于 ...
- Matrix Chain Multiplication (堆栈)
题目链接:https://vjudge.net/problem/UVA-442 题目大意:输入n个矩阵的维度和一些矩阵链乘表达式,输出乘法的次数.如果乘法无法进行,输出error. 假定A是m*n的矩 ...
- POJ2246 HDU1082 ZOJ1094 UVA442 Matrix Chain Multiplication题解
代码来源:DeathYmz AC的C++语言程序如下: #include<iostream> #include<cstdio> #include<cstring> ...
- UVa-442-Matrix Chain Multiplication
题目:UVa 442 Matrix Chain Multiplication 题目分析: 关键是解析表达式,可以用栈来解决:遇到字母时入栈,遇到右括号时出栈并且计算,然后结果入栈.因为输入保证合法,括 ...
- 30行代码AC——例题6-3 矩阵链乘(Maxtrix Chain Multiplication, UVa 442)——解题报告
励志用尽量少的代码做高效的表达. 题目(提交)链接→UVa-442 储备知识: 矩阵相乘次数: 如图:A矩阵*B矩阵得到C矩阵. C矩阵中元素个数=A矩阵行数*B矩阵列数.得到C矩阵中任意元素都需要运 ...
- ZOJ-1094-Matrix Chain Multiplication
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1094 编程任务:对于给定的矩阵相乘顺序,计算矩阵相乘的乘法次数. 注:题目 ...
最新文章
- 应届生程序员,业务和技术孰轻孰重,如何找到适合自己的方向
- Attempt to present vc on vc which is already presenting vc/(null)
- jquery的动画学习--jquery权威指南
- 前端学习(1557):安全问题
- linux修图,修图只知道Photoshop?11款高逼格修图工具快来get!
- 一文带你 GNN 从入门到起飞,做一个饭盆最稳 GNN 饭人!
- 旷视高调进军AIoT!先砸20亿建智能物流生态,发布机器人协作大脑河图
- docker安装jdk8
- Pandas速查手册中文版
- 正态分布某一点的概率怎么算_正态分布的抽卡概率算法
- 快速下载网页全部图片的方法
- 前端canvas图片压缩原理解析
- 【寒江雪】Go实现状态模式
- 服务器虚拟化厂商有哪些,国内外厂商的桌面虚拟化产品
- 免费物流快递单号查询接口快速对接(顺丰、韵达、申通、中通)
- 《黑白团团队》第八次团队作业:Alpha冲刺 第一天
- 计算机开模拟器,低配电脑如何强制开50个安卓模拟器挂机
- 百度搜索引擎结果网址参数 搜索框提示词搜索方式(rsv_sug2)
- 广州移动MGV3001_ZG_S905L3_UWE5621DS_线刷固件包
- 取消wps右键菜单_wps自动生成论文目录出现错误怎么办
热门文章
- PetShop 4.0讨论专贴(QA)
- 2016设置方框的尺寸_四种模板脚手架分类、优缺点及参数设置对比
- dbm,dbi,dbd,db,dbc的区别是什么
- java8 并行执行方法_如何在Java8中执行此并行任务
- 交互式python shell
- 手动制作自己想的语谱图
- Bucking the stigma (留学生请摘掉有色眼镜看社区大学)
- docker的学习笔记(一)-一些基本的命令的学习
- RHEL 5服务篇—使用Apache搭建web服务(四)部署AWStats网站分析系统
- 交通优化需求下 智能交通已达千亿市场