ZOJ1094 POJ2246Matrix Chain Multiplication

来源:互联网 发布:js正则表达式\< 编辑:程序博客网 时间:2024/04/29 03:39

第一次在这里贴算法题,如有不足希望大家指教。

/******************************************************************************* * Author : Neo Fung * Email : neosfung@gmail.com * Last modified : 2011-07-12 16:35 * Filename : ZOJ1094_POJ2246.cpp * Description : ZOJ1094 POJ2246Matrix Chain Multiplication * *****************************************************************************/// ZOJ1094_POJ2246.cpp : 定义控制台应用程序的入口点。//#include <stdio.h>#include <iostream>#include <string>#include <vector>#include <stack>#include <map>#include <math.h>#include <algorithm>#include <numeric>#include <functional>using namespace std;int main(void){//ifstream cin("data.txt");pair<int,int> A,B,TEMP,alap2pair[26];char alaph[128]={0};char ch;int a,b;string str;stack<pair<int,int> > mystack;int n;cin>>n;int i,j,k;for(i=0;i<n;++i){cin>>ch>>a>>b;alaph[ch]=i;alap2pair[i]=make_pair(a,b);}while(cin>>str){int length(str.length());int sum(0);while(!mystack.empty()) mystack.pop();for(i=0;i<length;++i){if(str.at(i) ==')'){B = mystack.top();mystack.pop();A = mystack.top();mystack.pop();if (A.second != B.first){sum =-1;break;}sum += A.first * A.second * B.second;TEMP = make_pair(A.first,B.second);mystack.pop();mystack.push(TEMP);}else{if (str.at(i) == '('){mystack.push(make_pair(0,0));}elsemystack.push(alap2pair[alaph[str.at(i)]]);}}if (sum ==-1){cout<<"error"<<endl;} else{cout<<sum<<endl;}}return 0;}


很简单的一条模拟题,直接用stack搞定吧。。。



原创粉丝点击