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

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

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        // [[a,b], [b,c], [c,d]]
        // [a,b]*[b,c]=[a,c]= a*b*c
        // [a,c]*[c,d]=[a,d]= a*c*d

        int n = in.nextInt();
        int[][] arr =  new int[n][2];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < 2; j++) {
                arr[i][j] = in.nextInt();
            }
        }

        String exp = in.next();

        Stack<Integer> sta = new Stack();

        // 遇到左括号,出栈,遇到元素进栈
        int res = 0;
        for (int i = 0,j = 0; i < exp.length(); i++) {
             
            if(Character.isLetter(exp.charAt(i))){
                sta.push(arr[j][0]);
                sta.push(arr[j][1]);
                j++;
            }
            
            if(exp.charAt(i)==')'){
                int c =  sta.pop();
                int b2 = sta.pop();
                int b1 = sta.pop();
                int a = sta.pop();// a先进后出 !!!!!!!!!

                res+=c*b1*a;
                // 记得重新将[a,c]推进去
                // 此时a也要保持原样,先进!!!!!!!!!
                sta.push(a);
                sta.push(c);
            }
        }

        System.out.print(res);

    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务