题解 | #矩阵乘法#
矩阵乘法
https://www.nowcoder.com/practice/ebe941260f8c4210aa8c17e99cbc663b
// 一开始没想明白,毕竟据矩阵相乘的规则忘了,看了看前一位朋友的代码就明白了
// 然后按照思路写了下,就顺便分享一下,其实就是三步
// 获取矩阵行列数,生成乘数矩阵A、B,然后即使A、B矩阵相乘得到结果并打印
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// x、y、z 对应矩阵的行列, line 标志第几行
let [x, y, z, line] = [0, 0, 0, 0]
// A B 对应两个相乘矩阵
let A = []
let B= []
// 结果矩阵C
rl.on('line', function (input) {
line++
// 1、收集两个矩阵的行列
switch(line){
case 1: x = Number(input); break;
case 2: y = Number(input); break;
case 3: z = Number(input); break;
}
// 2、生活成两个矩阵
if(line > 3 && line <= x + 3){
A.push(input.split(' ').map(Number))
}else if(line > x + 3 && line <= y + x + 3){
B.push(input.split(' ').map(Number))
}
// 3、两个矩阵相乘得到结果矩阵,第一个矩阵的每行乘第二个矩阵的每列的得到的结果
if(line === y + x + 3){
const C = new Array(x).fill(0).map(item=>new Array(z).fill(0))
for(let i = 0; i < x; i++){
for(let j = 0; j < z; j++){
// 行列相乘后的结果加起来(每个数字相乘后的结果加起来)
for(let k = 0; k < y; k++){
C[i][j] += A[i][k] * B[k][j]
}
}
}
// 打印结果
for(let m=0;m<x;m++){
console.log(C[m].join(' '))
}
}
});
凡岛公司福利 595人发布