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

1.使用双栈,遍历规则,遇到"("进栈1,遇到字母也进栈1,遇到")"则出栈直到把"("出栈

2.因为不知道每一对()里有多少个矩阵,所以出栈的元素要依次压入栈2处理,统计次数,最后把处理完的一个元素再压回到栈1

3.遍历完后输出统计次数即可

const rl = require("readline").createInterface({ input: process.stdin });

const inputArr = []
rl.on('line',line => {
    inputArr.push(line.trim())
})
rl.on('close',() => {
    const n = parseInt(inputArr[0])
    const arr = inputArr.slice(1,n + 1)
    const reg = inputArr[n + 1]
    const stack1 = []
    const stack2 = []
    let sum = 0
    for(let i = 0;i < reg.length;i++) {
        if(reg[i] === ')') {
            let temp = stack1.pop()
            while(temp !== '(') {
                stack2.push(temp)
                temp = stack1.pop()
            }
            while(stack2.length > 1) {
                const a = stack2.pop().split(' ')
                const b = stack2.pop().split(' ')
                sum += a[0] * a[1] * b[1]
                stack2.push(a[0] + ' ' + b[1])
            }
            stack1.push(stack2.pop())
        }else if(reg[i] === '('){
            stack1.push(reg[i])
        }else {
            stack1.push(arr.shift())
        }
    }
    console.log(sum)
})
全部评论

相关推荐

不愿透露姓名的神秘牛友
09-27 18:40
一嗨租车 开发 5000 本科双一流
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务