【C++】OJ442

#include<iostream>
#include<string>
#include<vector>
#include<stack>
using namespace std;
class matrix{
public:
	char name;
	int row;
	int rank;
    matrix(){
		name = ' ';
		row = 0;
		rank = 0;
	}
};
int main(){
    vector<matrix>a;
	int b;
	cin >> b;
	while(b>0){
		matrix c;
		cin >> c.name;
		cin >> c.row;
		cin >> c.rank;
		a.push_back(c);
		b--;
	}
	string s = " ";
	char d;
	int i = 0;
	int number = 0;
	stack<char> e;
	cin >> s;
	for(unsigned int j = 0;j<s.length();j++){
		d = s[j];
		if(d=='(')
			continue;
		else if(d==')'){
			char f = e.top();
			e.pop();
			char g = e.top();
			e.pop();
			int m1 = 0,n2 = 0,n = 0;
			vector<matrix>::iterator it;
			for(it=a.begin();it!=a.end();it++){
				if(it->name==g){
					m1 = it->row;
					n = it->rank;
				}
				else if(it->name==f){
					n2 = it->rank;
				}
			}
			number += m1*n2*n;
			matrix h;
			h.name = i;
			h.row = m1;
			h.rank = n2;
			e.push(h.name);
			a.push_back(h);
			i++;
		}
		else{
			e.push(d);
		}
	}
	if(e.size()==2){
       char f = e.top();
	   e.pop();
	   char g = e.top();
	   e.pop();
	   int m1 = 0,n2 = 0,n = 0;
	   vector<matrix>::iterator it;
	   for(it=a.begin();it!=a.end();it++){
			if(it->name==g){
				m1 = it->row;
				n = it->rank;
			}
			else if(it->name==f){
				n2 = it->rank;
			}
		}
		number += m1*n2*n;
	}
	cout << number;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值