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

矩阵乘法计算量估算

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

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
        Stack<Integer> matrix = new Stack<>();
        String a;
        int i = 0, l, n = 0, m1, m2, m3, index, sum = 0;
        char[] chs;
        int[][] dim;
        try {
            a = r.readLine();
            chs = a.toCharArray();
            l = chs.length;
            while (i < l) {
                n *= 10;
                n += chs[i] - '0';
                i++;
            }
            i = 0;
            dim = new int[n][2];
            while (i < n) {
                a = r.readLine();
                parsing(a, dim[i++]);
            }
            a = r.readLine();
            chs = a.toCharArray();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        i = 0;
        l = chs.length;
        while (i < l) {
            if (chs[i] == ')') {
                m1 = matrix.pop();
                m2 = matrix.pop();
                matrix.pop();
                m3 = matrix.pop();
                sum += m1 * m2 * m3;
                matrix.push(m3);
                matrix.push(m1);
                i++;
                continue;
            }
            if ((chs[i] - 'A' | 'Z' - chs[i]) > 0) {
                index = chs[i] - 'A';
                matrix.push(dim[index][0]);
                matrix.push(dim[index][1]);
            }
            i++;
        }
        System.out.print(sum);
    }

    private static void parsing(String a, int[] mat) {
        char[] chs = a.toCharArray();
        int i = 0, l = chs.length, n = 0;
        while (i < l) {
            if (chs[i] == ' ') {
                mat[0] = n;
                n = 0;
                i++;
                continue;
            }
            n *= 10;
            n += chs[i] - '0';
            if (i == l - 1) mat[1] = n;
            i++;
        }
    }
}

全部评论

相关推荐

海螺很能干:每次看到这种简历都没工作我就觉得离谱
点赞 评论 收藏
分享
04-08 13:31
已编辑
门头沟学院 前端工程师
D0cC:京东营收1万多亿人民币,阿里9000多亿,虽然他俩利润都没腾讯和字节多,但是很恐怖了啊,负担了多少打工人的薪水
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务