矩阵乘法计算量估算
当使用stack等stl库时,如果使用s.pop(),s.top(),则必须判定stack是否为空。
#include<iostream> #include<vector> #include<stack> #include<string.h> using namespace std; int main() { int num; vector<int> vrow; vector<int> vcol; cin>>num; for(int i=0; i<num; i++) { int x,y; cin>>x>>y; vrow.push_back(x); vcol.push_back(y); } char str[100]; cin>>str; int siz = strlen(str); int count = 0; stack<char> s; for(int i=0; i<siz; i++) { if(str[i] >='A' && str[i]<='Z') { if(s.empty() || (!s.empty() && s.top()=='(') ) { s.push(str[i]); } else { char ch = s.top(); int r = vrow[ch-'A']; int p = vcol[ch-'A']; int c = vcol[str[i]-'A']; count = count + r*p*c; vrow[ch-'A'] = r; vcol[ch-'A'] = c; } } else if(str[i]==')') { char ch = s.top(); s.pop(); s.pop(); if(!s.empty()) { char ch2 = s.top(); if(ch2>='A' && ch2<='Z') { s.pop(); int m = vrow[ch2-'A']; int p = vcol[ch2-'A']; int n = vcol[ch-'A']; count += m*p*n; vrow[ch2-'A'] = m; vcol[ch2-'A'] = n; s.push(ch2); } else { s.push(ch); } } else { s.push(ch); } } else if(str[i]=='(') { s.push(str[i]); } else { } } cout<<count; return 0; }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步