ZOJ1094 Matrix Chain Multiplication
来源:互联网 发布:数据挖掘技术研究 编辑:程序博客网 时间:2024/06/11 18:43
栈的入门题,比较经典。
题意:给出一个矩阵乘法表达式,判断运算是否合法,若合法则输出乘法运算的次数。
思路:乘法运算次数很好解决,关键是得到正确的运算顺序。根据题意,()之间有两项相乘,因此每遇到一个字母,就压入栈;一旦来到")",表明有两项需要相乘,那么取出矩阵栈顶的两项,判断是否合法,把相乘的结果压入栈中。
代码
#include <iostream>#include <stack>using namespace std;struct node{ char c; int m, n;};int main(){ int t; while(cin >> t){ node p[30]; for(int i = 0; i < t; i++){ char c; int m, n; cin >> c >> m >> n; p[i].c = c; p[i].m = m; p[i].n = n; } string s; while(cin >> s && !cin.eof()){ int cnt = 0, flag = 1; stack<node> u; for(int i = 0; s[i] != '\0'; i++){ if(s[i] >= 'A' && s[i] <= 'Z'){ node x; for(int j = 0; j < t; j++){ if(p[j].c == s[i]){ x.c = s[i]; x.m = p[j].m; x.n = p[j].n; break; } } u.push(x); } else if(s[i] == ')'){ node x = u.top(); u.pop(); node y = u.top(); u.pop(); if(x.m != y.n){ cout << "error" << endl; flag = 0; break; } cnt += x.n * x.m * y.m; x.m = y.m; u.push(x); } } if(flag) cout << cnt << endl; } } return 0;}
0 0
- zoj1094 Matrix Chain Multiplication
- zoj1094-Matrix Chain Multiplication
- ZOJ1094-Matrix Chain Multiplication
- ZOJ1094 Matrix Chain Multiplication
- zoj1094 Matrix Chain Multiplication 模拟
- ZOJ1094 POJ2246Matrix Chain Multiplication
- Matrix Chain Multiplication
- Matrix chain multiplication problem
- Matrix Chain Multiplication
- uva442 Matrix Chain Multiplication
- 442 - Matrix Chain Multiplication***
- poj Matrix Chain Multiplication
- 442 - Matrix Chain Multiplication
- UVaOJ442---Matrix Chain Multiplication
- poj2246 - Matrix Chain Multiplication
- 442 - Matrix Chain Multiplication
- uva442 Matrix Chain Multiplication
- 442 - Matrix Chain Multiplication
- Spring获取bean方式(BeanFactory和ApplicationContext)
- 2015年1月26日 格力PK小米
- Gson.jar配合zTree小例子
- windows8 系统语言由中文修改为英文系统
- 对于刚接触iOS开发,Xcode6的部分疑惑
- ZOJ1094 Matrix Chain Multiplication
- 文件索引
- 3sum
- Android中判断网络状态
- Python笔记 - I am back
- 基础------for循环语句
- linux-3.2.0内核-kconfig.txt翻译
- Android中的Handler机制
- IOS支付宝支付sdk下载网址