hdu 1082 Matrix Chain Multiplication
2013-04-21 15:01
323 查看
栈的应用。
当是‘(’时,不处理。
当是‘)’时,出栈前两个矩阵,算出这两个矩阵的乘积,然后,把新的矩阵入栈。
当是‘字符’时,直接进栈。
当是‘(’时,不处理。
当是‘)’时,出栈前两个矩阵,算出这两个矩阵的乘积,然后,把新的矩阵入栈。
当是‘字符’时,直接进栈。
#include <iostream> #include<stack> #include<string> using namespace std; struct Matrix { int r,c; Matrix(int a,int b) { r=a; c=b; } Matrix(){} }; int main() { // freopen("in.txt","r",stdin); int n; Matrix m[26]; stack<Matrix> s; scanf("%d",&n); char ch[3]; while(n--) { cin>>ch; scanf("%d %d",&m[ch[0]-'A'].r,&m[ch[0]-'A'].c); } string exp; while(cin>>exp) { while(!s.empty()) s.pop(); int i=0; int sum=0; while(exp[i]) { if(exp[i]=='(') { i++; continue; } if(exp[i]==')') { Matrix b=s.top(); s.pop(); Matrix a=s.top(); s.pop(); if(a.c!=b.r) break; sum+=a.r*a.c*b.c; Matrix tmp(a.r,b.c); s.push(tmp); i++; continue; } s.push(m[exp[i++]-'A']); } if(!exp[i]) printf("%d\n",sum); else printf("error\n"); } return 0; }
相关文章推荐
- hdu 1082 Matrix Chain Multiplication--表达式求值
- HDU 1082 Matrix Chain Multiplication
- HDU 1082 Matrix Chain Multiplication(堆栈的简单运用)
- HDU 1082 Matrix Chain Multiplication
- POJ2246 HDU1082 ZOJ1094 UVA442 Matrix Chain Multiplication(矩阵相乘)
- HDU1082 Matrix Chain Multiplication 栈+字符串处理
- hdu1082 Matrix Chain Multiplication
- hdu 1082 Matrix Chain Multiplication
- HDU 1082 Matrix Chain Multiplication(栈和map的使用)
- HDU 1082 Matrix Chain Multiplication
- HDU 1082 Matrix Chain Multiplication 逆波兰式
- hdu 1082 Matrix Chain Multiplication
- HDOJ HDU 1082 Matrix Chain Multiplication
- POJ2246 HDU1082 ZOJ1094 UVA442 Matrix Chain Multiplication题解
- hdu_1082 Matrix Chain Multiplication (字符串)
- HDU 1082 Matrix Chain Multiplication
- UVa 442 && HDU 1082 Matrix Chain Multiplication【栈】
- HDU 1082 Matrix Chain Multiplication
- HDU 1082 Matrix Chain Multiplication
- UVa 442/HDU 1082/ZOJ 1094 Matrix Chain Multiplication(模拟&栈)