题解 | #矩阵乘法计算量估算#
矩阵乘法计算量估算
http://www.nowcoder.com/practice/15e41630514445719a942e004edc0a5b
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int a;
while(cin>>a)
{
int w=0;
vector<pair<int, int>>b;
for(int i=0;i<a;i++)
{
int c,d;
cin>>c>>d;
make_pair(c,d);
b.push_back(pair<int,int>(c,d));
}
string e;
cin>>e;
while(e.length()>1)
{
for(int i=0;i<e.length();i++)
{
if(e[i]=='('&&e[i+3]==')')
{
int f,g;
f=e[i+1]-'A';
g=e[i+2]-'A';
w+=b[f].first*b[g].second*b[g].first;
b[f]=pair<int,int>(b[f].first,b[g].second);
b.erase(b.begin()+g);
for(int j=0;j<e.length();j++)
{
if(e[j]>='A'&&e[j]<='Z'&&e[j]>e[i+2])
{
e[j]--;
}
}
e.erase(i,1);
e.erase(i+1,2);
}
}
}
cout<<w;
}
}
#include<vector>
using namespace std;
int main()
{
int a;
while(cin>>a)
{
int w=0;
vector<pair<int, int>>b;
for(int i=0;i<a;i++)
{
int c,d;
cin>>c>>d;
make_pair(c,d);
b.push_back(pair<int,int>(c,d));
}
string e;
cin>>e;
while(e.length()>1)
{
for(int i=0;i<e.length();i++)
{
if(e[i]=='('&&e[i+3]==')')
{
int f,g;
f=e[i+1]-'A';
g=e[i+2]-'A';
w+=b[f].first*b[g].second*b[g].first;
b[f]=pair<int,int>(b[f].first,b[g].second);
b.erase(b.begin()+g);
for(int j=0;j<e.length();j++)
{
if(e[j]>='A'&&e[j]<='Z'&&e[j]>e[i+2])
{
e[j]--;
}
}
e.erase(i,1);
e.erase(i+1,2);
}
}
}
cout<<w;
}
}