442 - Matrix Chain Multiplication
来源:互联网 发布:淘宝提醒买家好评短信 编辑:程序博客网 时间:2024/06/11 21:22
#include <iostream>#include <list>#include <cstring>#include <vector>using namespace std;typedef struct{ char mat_name; int row; int col;} Mat;typedef struct{ int r; int c;} News;int main(){// freopen("a.txt","r",stdin); int i,n,flag,count,sum; cin>>n; vector<Mat> v; v.clear(); while(n--) { Mat mat; cin>>mat.mat_name>>mat.row>>mat.col; v.push_back(mat); } char str[110]; memset(str,0,sizeof(str)); int s[110]; while(cin>>str) { memset(s,0,sizeof(s)); flag=count=0; News news[110]; for(i=sum=0; i<strlen(str); i++) { if(str[i]<='Z'&&str[i]>='A') { news[sum].r=v[str[i]-'A'].row; news[sum++].c=v[str[i]-'A'].col; } else if(str[i]==')'&&sum>=2) { if(news[sum-1].r!=news[sum-2].c) { flag=1; break; } count+=news[sum-2].r*news[sum-1].c*news[sum-1].r; news[sum-2].c=news[sum-1].c; sum--; } } if(flag==1)cout<<"error"<<endl; else cout<<count<<endl; memset(str,0,sizeof(str)); } return 0;}