Uva 442 Matrix Chain Multiplication
2015-01-24 11:06
381 查看
求解矩阵相乘是乘法进行的次数 重点在于如何解析表达式 我们发现可以用一个栈来完成,遇到字母入栈 遇到右括号出栈进行计算。
#include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <stack> using namespace std; struct Matrix{ int a,b; Matrix(int a = 0, int b = 0) : a(a), b(b) {} }m[26]; stack <Matrix> S; int main(){ int n; scanf("%d",&n); char s[1010]; int a,b; for(int i=0; i<n; i++){ scanf("%s %d %d",s, &a, &b); m[s[0] - 'A'].a = a; m[s[0] - 'A'].b = b; } while(scanf("%s",s) != EOF){ int l = strlen(s), ans = 0; bool error = false; for(int i=0; i<l; i++){ if(s[i] >= 'A' && s[i] <= 'Z') S.push(m[s[i] - 'A']); else if(s[i] == ')'){ Matrix m2 = S.top(); S.pop(); Matrix m1 = S.top(); S.pop(); if(m1.b != m2.a){ error = true; break; } ans += m1.a * m1.b * m2.b; S.push(Matrix(m1.a, m2.b)); } } if(error) puts("error"); else printf("%d\n",ans); } return 0; }
相关文章推荐
- UVA 442-Matrix Chain Multiplication
- UVA 442 Matrix Chain Multiplication
- Uva - 442 - Matrix Chain Multiplication
- UVA-442 Matrix Chain Multiplication
- UVA442 Matrix Chain Multiplication 矩阵运算量计算(栈的简单应用)
- uva442(Matrix Chain Multiplication)—线性表
- UVA 442 Matrix Chain Multiplication ( stack 应用)
- 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
- UVa 442: Matrix Chain Multiplication
- UVa 442 - Matrix Chain Multiplication
- UVA 442 Matrix Chain Multiplication
- uva 442 Matrix Chain Multiplication
- 【日常学习】【栈】【表达式求值】Uva442 - Matrix Chain Multiplication题解
- UVa442 Matrix Chain Multiplication(栈)
- UVA 442 二十 Matrix Chain Multiplication
- UVa 442 - Matrix Chain Multiplication