题解 | #矩阵乘法计算量估算#
矩阵乘法计算量估算
http://www.nowcoder.com/practice/15e41630514445719a942e004edc0a5b
使用栈计算
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
pair<int,int> matrix_mul(pair<int,int> a,pair<int,int> b,int& sum) {
sum += a.first * b.second * a.second;
return pair<int,int>(a.first,b.second);
}
int main() {
int num;
cin >> num;
vector<pair<int,int>> matrixs;
int count = num;
while(count--) {
int a,b;
cin >> a >> b;
matrixs.push_back(pair<int,int>(a,b));
}
string s;
cin >> s;
string::iterator it_start = s.begin();
string::iterator it_end = s.end();
// stack<char> s;
stack<pair<int,int>> sp;
count = 0;
int sum=0;
while(it_start!= it_end) {
switch(*it_start) {
case '(':
break;
case ')': {
pair<int,int> b(sp.top());
sp.pop();
pair<int,int> a(sp.top());
sp.pop();
sp.push(matrix_mul(a,b,sum));
break;
}
default:
sp.push(matrixs[count]);
count++;
break;
}
it_start++;
}
cout << sum;
return 0;
}