题解 | #矩阵乘法#

矩阵乘法

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(' '))
        }
    }
});

全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 12:10
点赞 评论 收藏
分享
今天 10:56
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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