| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
从风格到思路,希望大牛指点下#include <iostream>
#include <string>
#include <stack>
using namespace std;
typedef struct matrix_t
{
char name;
int row;
int col;
}matrix;
int N;
matrix array[30];
// init
void init();
// get index by name
int index(char name);
int main()
{
//freopen("input.dat", "r", stdin);
init();
string s;
while(cin >> s)
{
stack<matrix> st;
int ans = 0;
bool error = false;
for(string::iterator it = s.begin(); it != s.end(); it++)
{
if(*it == '(') continue;
if(*it == ')')
{
matrix m1 = st.top();
st.pop();
matrix m2 = st.top();
st.pop();
if(m2.col != m1.row)
{
cout << "error" << endl;
error = true;
break;
}
matrix m;
m.name = 0;
m.row = m2.row;
m.col = m1.col;
st.push(m);
ans += m2.row * m2.col * m1.col;
} else{
int i = index(*it);
if(i == -1) break;
st.push(array[i]);
}
}
if(!error) cout << ans << endl;
}
return 0;
}
void init()
{
cin >> N;
for(int i = 0; i < N; i++)
cin >> array[i].name >> array[i].row >> array[i].col;
}
int index(char matrix_name)
{
for(int i = 0; i < N; i++)
if(array[i].name == matrix_name) return i;
return -1;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator