题解 | #矩阵乘法计算量估算#
矩阵乘法计算量估算
https://www.nowcoder.com/practice/15e41630514445719a942e004edc0a5b
#include <iostream>
#include <stack>
#include <vector>
#include <string>
using namespace std;
//毕竟也不知道多少个矩阵,还是用堆栈。矩阵类封装,思路挺好的
struct matrix{
int x,y;
};
void cal(string s,matrix arr[],int n){
stack<matrix> m;
int sum=0,i=0;
for(auto c:s){
if(c==')'){
matrix m0=m.top();
m.pop();
sum+=m0.x*m0.y*m.top().x; //2矩阵乘法数计算
m.top().y=m0.y; //栈顶矩阵大小更新为乘后结果
}else if(c!='('){ //矩阵压栈
m.push(arr[i++]);
}
}
cout<<sum;
}
int main(){
int n;
string s;
cin>>n;
matrix *arr=new matrix[n];
for(int i=0;i<n;i++){
cin>>arr[i].x>>arr[i].y;
}
cin>>s;
cal(s,arr,n);
return 0;
}
#华为笔试#

