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

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)
})
全部评论

相关推荐

07-07 12:47
门头沟学院 Java
码农索隆:竟然还真有卡体检报告的
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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