例题6-3 矩阵链乘(Matrix Chain Multiplication, UVa 442)
来源:互联网 发布:矩阵音响 编辑:程序博客网 时间:2024/06/06 07:00
#ifdef _DEBUG#pragma warning(disable : 4996)#endif#include <iostream>#include <string>#include <vector>#include <stack>#include <queue>#include <deque>#include <set>#include <map>#include <algorithm>#include <functional>#include <sstream>#include <utility>#include <cstring>#include <cstdio>#include <cstdlib>#include <ctime>#include <cmath>#include <cctype>#define CLEAR(a, b) memset(a, b, sizeof(a))#define CLOSE() ios::sync_with_stdio(false)#define IN() freopen("in.txt", "r", stdin)#define OUT() freopen("out.txt", "w", stdout)#define PF(a) printf("%d\n", a)#define SF(a) scanf("%d", &a)#define SFF(a, b) scanf("%d%d", &a, &b)#define FOR(i, a, b) for(int i = a; i < b; ++i)#define LL long long#define maxn 505#define mod 1000007#define INF 1e15using namespace std;//------------------------------------------------------------------------------------------//typedef pair<int, int> PII;map<char, PII> matrix;int main() {#ifdef _DEBUGIN(); OUT();#endifint n;while (SF(n) == 1) {FOR(i, 0, n) {char ch;cin >> ch;int x, y;SFF(x, y);matrix.insert(make_pair(ch, PII(x, y)));}string s;stack<PII> sta;int ans = 0, ok = 1;while (cin >> s) {ok = 1; ans = 0;FOR(i, 0, s.size()) {if (isalpha(s[i])) {sta.push(matrix[s[i]]);//printf("(%d, %d)\n", sta.top().first, sta.top().second);}if (s[i] == ')') {int c = sta.top().first;int d = sta.top().second; sta.pop();int a = sta.top().first;int b = sta.top().second; sta.pop();//printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d);if (b != c) {ok = 0;//printf("b = %d, c = %d\n", b, c);break;}ans += a * b * d;if (sta.empty()) break;sta.push(PII(a, d));}}if (ok) PF(ans);else printf("error\n");}}return 0;}//栈对表达式的作用,遇到字母时入栈,有括号出栈//本题用结构题实现更加清晰
阅读全文
0 0
- 例题6-3 矩阵链乘(Matrix Chain Multiplication, UVa 442)
- UVa442 例题6-3 矩阵链乘(Matrix Chain Multiplication)
- 例题6-3 UVA 442 Martrix Chain Multiplication矩阵链乘
- UVa 442 Matrix Chain Multiplication(矩阵链乘,模拟栈)
- Matrix Chain Multiplication 矩阵链乘 UVA 442
- UVA 442 Matrix Chain Multiplication (矩阵链乘)
- UVa OJ Matrix Chain Multiplication 矩阵链乘 442
- Uva 442 Matrix Chain Multiplication (矩阵连乘)
- 矩阵链乘(Matrix Chain Multiplication)
- UVa442 Matrix Chain Multiplication(矩阵链乘)
- UVa442 Matrix Chain Multiplication(矩阵链乘)
- UVa442 Matrix Chain Multiplication(矩阵链乘)java实现
- poj2246 Matrix Chain Multiplication 矩阵连乘
- uva 442 Matrix Chain Multiplication(模拟)
- Matrix Chain Multiplication (UVa 442)
- UVA 442 Matrix Chain Multiplication(栈)
- UVa 442 Matrix Chain Multiplication
- Uva 442 Matrix Chain Multiplication
- 事件循环与process模块
- Spring Data Redis简单搭建
- 关于Calendar用法的一些总结
- AlarmManager的Constant值
- ScheduledExecutorService定时周期执行指定的任务
- 例题6-3 矩阵链乘(Matrix Chain Multiplication, UVa 442)
- 使用POST、GET、AsyncHttpClient创造服务端用手机端来连接进行登录
- java虚拟机内存模式,栈和堆
- linux 设备驱动之字符设备
- HDU 4694 [支配树]
- eclipse中的tomcat启动报错“The JRE could not be found. Edit the server and change the JRE location.”
- 2017 多校系列 2
- 欧拉函数应用
- 40个Java多线程问题总结