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

矩阵乘法计算量估算

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;

    }

}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务