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

矩阵乘法计算量估算

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

import java.util.Scanner; import java.util.Stack;

public class Main {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner in = new Scanner(System.in);
    while (in.hasNext()) {
        int num = in.nextInt();
        int a[][] = new int[num][2];
        for (int i = 0; i < num; i++) {
            a[i][0] = in.nextInt();
            a[i][1] = in.nextInt();
        }

        String s = in.next();

        int res = calc(s, a);
        System.out.println(res);


    }
}

public static int calc(String in, int[][] a) {
    char[] r = in.toCharArray();
    Stack<Integer> q = new Stack<Integer>();
    int sum = 0;
    for (int i = 0; i < r.length; i++) {
        if (r[i] == '(') {
            continue;
        } else if (r[i] == ')') {
            int a1 = q.pop();
            int a2 = q.pop();
            int a3 = q.pop();
            int a4 = q.pop();

            sum += a1 * a2 * a4;
            q.push(a4);
            q.push(a1);
        } else {
            int index = r[i] - 'A';
            q.push(a[index][0]);
            q.push(a[index][1]);
        }


    }

    //扫尾
    if (q.isEmpty() == false && q.size() == 4) {
        int a1 = q.pop();
        int a2 = q.pop();
        int a3 = q.pop();
        int a4 = q.pop();

        sum += a1 * a2 * a4;
    }
    return sum;

}

}

import java.util.Stack;

public class Main {

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        Scanner in = new Scanner(System.in);

        while (in.hasNext()) {

            int num = in.nextInt();

            int a[][] = new int[num][2];

            for (int i = 0; i < num; i++) {

                a[i][0] = in.nextInt();

                a[i][1] = in.nextInt();

            }

            String s = in.next();

            int res = calc(s, a);

            System.out.println(res);

        }

    }

    public static int calc(String inint[][] a) {

        char[] r = in.toCharArray();

        Stack<Integerq = new Stack<Integer>();

        int sum = 0;

        for (int i = 0; i < r.length; i++) {

            if (r[i] == '(') {

                continue;

            } else if (r[i] == ')') {

                int a1 = q.pop();

                int a2 = q.pop();

                int a3 = q.pop();

                int a4 = q.pop();

                sum += a1 * a2 * a4;

                q.push(a4);

                q.push(a1);

            } else {

                int index = r[i] - 'A';

                q.push(a[index][0]);

                q.push(a[index][1]);

            }

        }

        //扫尾

        if (q.isEmpty() == false && q.size() == 4) {

            int a1 = q.pop();

            int a2 = q.pop();

            int a3 = q.pop();

            int a4 = q.pop();

            sum += a1 * a2 * a4;

        }

        return sum;

    }

}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利&nbsp;有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的&nbsp;真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
点赞 评论 收藏
分享
07-02 18:09
门头沟学院 Java
苍穹外卖和谷粒商城这俩是不是烂大街了,还能做吗?
想去重庆的鸽子在吐槽:你不如把这俩做完自己搞明白再优化点再来问 何必贩卖焦虑
点赞 评论 收藏
分享
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-04 14:23
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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