JavaScript题解 | #矩阵乘法#

矩阵乘法

https://www.nowcoder.com/practice/ebe941260f8c4210aa8c17e99cbc663b

const rl = require("readline").createInterface({
    input: process.stdin,
    output: process.output,
});

const inputs = [];

rl.on("line", (line) => {
    inputs.push(line);
}).on("close", () => {
    resolve(inputs);
});

function resolve(inputs) {
  // inputs 输入都是字符串,需要做处理
  const f_row = parseInt(inputs[0]), // x
    f_col = parseInt(inputs[1]), // y
    t_row = parseInt(inputs[1]), // y
    t_col = parseInt(inputs[2]); // z

  const f_martix = [],
    t_martix = [];
  
  // index 可以正确表示矩阵的行数
  for (let i = 3, index = 0; i < 3 + f_row; i++, index++) {
    const temp = inputs[i].split(" ");
    f_martix[index] = temp.slice(0, f_col);
  }

  const startRow = 3 + f_row;
  for (let t = startRow, index = 0; t < startRow + t_row; t++, index++) {
    const temp = inputs[t].split(" ");
    t_martix[index] = temp.slice(0, t_col);
  }

  const res = computedMarix(f_martix, t_martix);

  for (let i = 0; i < res.length; i++) {
    console.log(res[i].join(" "));
  }
}

function computedMarix(f, t) {
    let res = [];
    // 数组没有初始化为二维数组,就不要用 res[i][j]
    for (let i = 0; i < f.length; i++) {
        let jArr = [];
        for (let j = 0; j < t[0].length; j++) {
            let num = 0;
            for (let k = 0; k < t.length; k++) {
                num += parseInt(f[i][k]) * parseInt(t[k][j]);
            }
            jArr.push(num);
        }
        res.push(jArr);
    }

    return res;
}

思路:

模拟题,先找出两个矩阵,然后进行行列式的计算,最后输出结果。

行列式的计算题目还给出了公式,这就更简单了,实现公式即可。难点在于二维数组的表示,上述代码中如果你使用 `res[i][j] = xxx` 这样的表达式是会报错的,因为本身初始化的是一维数组。

除非你初始化为二维数组:

let d_arr = new Array(m).fill(1).map(() => new Array(n).fill(1));

这道题本身题目不难,难点就看你够不够细。

全部评论

相关推荐

把球:这个听过,你加了就会发现是字节的hr
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务