UVA-442 Matrix Chain Multiplication
来源:互联网 发布:unity3d 粒子系统火焰 编辑:程序博客网 时间:2024/06/05 01:14
题目链接:https://vjudge.net/problem/UVA-442
题意:输入n个矩阵的维度和一些矩阵链乘表达式,输出乘法的次数。若乘法无法进行,输出error。假定A是m*n矩阵,B是n*p矩阵,那么AB是n*p矩阵,乘法次数为m*n*p。若A的列数不等于B的列数,则乘法无法进行。
分析:用栈即可求出结果,遇到字母入栈,遇到右括号出栈并计算,结果入栈。
#include <iostream>#include <string>#include <cstring>#include <cstdio>#include <algorithm>#include <stack>#include <vector>using namespace std;const int MAXN=30;struct rec { int a,b;} m[MAXN];int main() { //freopen("in.txt","r",stdin); int n; cin>>n; for(int i=0; i<n; i++) { char c; cin>>c; int k=c-'A'; cin>>m[k].a>>m[k].b; } string expr; while(cin>>expr) { int ans=0; stack<rec> s; bool error=false; for(int i=0; i<expr.size(); i++) { if(isalpha(expr[i])) s.push(m[expr[i]-'A']); else if(expr[i]==')') { rec m1=s.top(); s.pop(); rec m2=s.top(); s.pop(); if(m1.a!=m2.b) { error=true; break; } ans+=m2.a*m2.b*m1.b; m2.b=m1.b; s.push(m2); } } if(!error) cout<<ans<<endl; else cout<<"error"<<endl; } return 0;}
阅读全文
0 0
- UVa 442 Matrix Chain Multiplication
- Uva 442 Matrix Chain Multiplication
- UVa 442 Matrix Chain Multiplication
- uva 442 - Matrix Chain Multiplication
- UVa 442 - Matrix Chain Multiplication
- UVa 442 - Matrix Chain Multiplication
- UVa 442 Matrix Chain Multiplication
- UVA 442 Matrix Chain Multiplication
- uva 442 - Matrix Chain Multiplication
- uva 442 Matrix Chain Multiplication
- UVa 442 - Matrix Chain Multiplication
- UVa 442 - Matrix Chain Multiplication
- uva 442Matrix Chain Multiplication
- uva-442 Matrix Chain Multiplication
- UVa 442 - Matrix Chain Multiplication
- uva 442 - Matrix Chain Multiplication
- UVA 442 Matrix Chain Multiplication
- uva 442 Matrix Chain Multiplication
- Okhttp之CallServerInterceptor简单分析
- sftp上传文件夹
- python读取.txt或.log文件
- spring整合mybatis的简单配置
- 唯密文攻击--实验吧详细解
- UVA-442 Matrix Chain Multiplication
- 读几本c++书的记录
- python3 range 倒序
- Markdown 11种基本语法
- poj 1511 邻接表+堆优化的dijstra
- 了解回调函数的一些总结
- HDU
- Hibernate学习之---继承映射
- 一维数组的定义和一维数组的引用