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

