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

矩阵乘法计算量估算

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

总体没有特别需要解释的。

比较在意的一点:如果出现(A(ABC)D),类似这种一个括号里有超过2个矩阵的例子,应该如何计算。

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scan=new Scanner(System.in);
        int n=scan.nextInt();
        int[][] matrix=new int[n][2];//储存矩阵内容
        for(int i=0;i<n;i++){
            matrix[i][0]=scan.nextInt();
            matrix[i][1]=scan.nextInt();
        }
        String input=scan.next();//输入的计算法则

        //输出结果
        System.out.println(solve(matrix,input));
    }

    //解决方案
    public static int solve(int[][] matrix, String input){
        int sum=0;
        Stack<Integer> stack=new Stack<>();//储存参与运算的矩阵
        for(int i=0;i<input.length();i++){
            char item=input.charAt(i);
            int location=item-'A';
            //如果字符为字母,则将该字母对应矩阵内容放入栈中,并记录存储了1个矩阵
            if(item<='Z' && item>='A'){
                stack.push(matrix[location][0]);
                stack.push(matrix[location][1]);
            }else if(item==')'){//如果字符为“)”,则表示第一个括号结束,可以开始计算
                    int y1=stack.pop();
                    int x1=stack.pop();
                    int y0=stack.pop();
                    int x0=stack.pop();
                    //计算乘法次数,并加入sum
                    sum+=x0*y0*y1;
                    //将新得到的矩阵放入栈中
                    stack.push(x0);
                    stack.push(y1);
            }else if(item=='('){
                continue;
            }
            
        }
        return sum;
    }
}

全部评论

相关推荐

找工作勤劳小蜜蜂:自我描述部分太差,完全看不出想从事什么行业什么岗位,也看不出想在哪个地区发展,这样 会让HR很犹豫,从而把你简历否决掉。现在企业都很注重员工稳定性和专注性,特别对于热爱本行业的员工。 你实习的工作又太传统的it开发(老旧),这部分公司已经趋于被淘汰,新兴的互联网服务业,比如物流,电商,新传媒,游戏开发和传统的It开发有天然区别。不是说传统It开发不行,而是就业岗位太少,基本趋于饱和,很多老骨头还能坚持,不需要新血液。 工作区域(比如长三角,珠三角,成渝)等也是HR考虑的因素之一,也是要你有个坚定的决心。否则去几天,人跑了,HR会被用人单位骂死。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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