题解 | #矩阵乘法#
矩阵乘法
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(' ')) } } });