题解 | #矩阵乘法计算量估算#

矩阵乘法计算量估算

https://www.nowcoder.com/practice/15e41630514445719a942e004edc0a5b

#include <cctype>
#include <iostream>
#include <stack>
#include <vector>

using namespace std;

int main() {
    int n;
    cin >> n;
    vector<vector<int>> m(n, vector<int>(2, 0));
    for (int i = 0; i != n; ++i) {
        cin >> m[i][0] >> m[i][1];
    }
    string op;
    cin >> op;
    stack<vector<int>> t;
    stack<char> p;
    long result = 0;
    for (int i = 0; i != op.size(); ++i) {
        if (op[i] == '(')
            p.push(op[i]);
        else if (isalpha(op[i])) {
            vector<int> k = { m[static_cast<int>(op[i] - 'A')][0], m[static_cast<int>(op[i] - 'A')][1] };
            t.push(k);
            if (isalpha(op[i + 1]) || op[i + 1] == '(')
                p.push('*');
        } else if (op[i] == ')') {
            while (!p.empty() && p.top() != '(') {
                vector<int> k = t.top();
                t.pop();
                vector<int> k2 = t.top();
                t.pop();
                result += k2[0] * k2[1] * k[1];
                p.pop();
                vector<int> new_v = { k2[0], k[1] };
                t.push(new_v);
            }
            if (!p.empty()) {
                p.pop();
                if (i < op.size() - 1 && (isalpha(op[i + 1]) || op[i + 1] == '('))
                    p.push('*');
            }
        }

    }
    cout << result;
}

依然使用双栈法,先进先出,遇到括号就开始往外弹出

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 14:23
点赞 评论 收藏
分享
06-17 00:26
门头沟学院 Java
程序员小白条:建议换下项目,智能 AI 旅游推荐平台:https://github.com/luoye6/vue3_tourism_frontend 智能 AI 校园二手交易平台:https://github.com/luoye6/vue3_trade_frontend GPT 智能图书馆:https://github.com/luoye6/Vue_BookManageSystem 选项目要选自己能掌握的,然后最好能自己拓展的,分布式这种尽量别去写,不然你只能背八股文了,另外实习的话要多投,尤其是学历不利的情况下,多找几段实习,最好公司title大一点的
无实习如何秋招上岸
点赞 评论 收藏
分享
07-01 17:14
中北大学 Java
兄弟们是真是假
牛客46374834...:我在boss上投java岗从来没成功过
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务