题解 | #矩阵乘法计算量估算#
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) })