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

矩阵乘法计算量估算

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

const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

// 定义保存矩阵个数的变量,及所有矩阵行列的数组
let [flag, n, matrix, rule] = [0, 0, [], '']

rl.on('line', function (line) {
    flag++

    // 保存矩阵个数、各个矩阵的行列(每个矩阵作为一个数组),规则
    if(flag === 1){
        n = Number(line)
    }else if(flag <= n+1){
        // 形成二维数组
        matrix.push(line.split(' ').map(Number))
    }else if (flag === n + 2){
        /** 
         * 关键是怎么知道这个规则是啥规则
         * 这里就是要考验栈的使用了,其定义规则:先进后出
         */
        // 模拟栈
        const stack = [] 
        // 计算次数
        let count = 0
        for(let i= 0; i < line.length; i++){
            // 前括号不做处理, 后括号要做运算
            if(line[i] === ')'){
                const second = stack.pop()
                const first = stack.pop()
                // 计算乘法次数
                count += (first[0] * first[1] * second[1])
                // 把新的矩阵行列数据放回栈中
                 stack.push([first[0], second[1]])

            }else if(/^[A-Z]$/.test(line[i])){
                // 是字母则其对应的行列数据入栈入栈
                stack.push(matrix.shift())
            }
        }
        console.log(count)
    }
});

全部评论

相关推荐

2025-12-19 21:53
门头沟学院 Java
想做OpenGL:不要一来就把自己定位这么低吧,把大厂当成目标,不断去学技术做项目,最后你至少能学到能找到中小厂的技术水平,你一上来就找这种两千块还要前后端都会的,其实对你用处不会很大,真去了也是打杂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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