题解 | #矩阵乘法#

矩阵乘法

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

所以 fill()这个方法来新建空白Array真的巨坑,因为fill的全部是同样的元素,导致后期修改一个,同index的其他元素内容也会改变,已经吃亏上当了,用了map方法新建空白Array,当然我也看了
尤其同学直接push,也是可以的,个人喜好不一样,完整代码如下:
let x = parseInt(readline());
let y = parseInt(readline());
let z = parseInt(readline());
let res = [];
while (line = readline()) {
    res.push(line);
}
let xArr = res.slice(0, x).map(x => x.split(' ').map(Number));
let yArr = res.slice(x).map(x => x.split(' ').map(Number));
let newArr = [...Array(z).fill([])];
yArr.forEach(a => {
    for (let i = 0; i < z; i++) {
        newArr[i] = newArr[i].concat(a[i]);
    }
})
//这里是重难点
//个人习惯 新建一个同等length的空白数组(开头已经说到过用fill()这个方法很坑,小伙伴们注意)
let output = [...Array(x)].map(a => [...Array(z)].map(b => 0));
//然后就是i,j,k三重循环,最终导出的数据(在这里,i,j,k真的弄了蛮久的,需要把逻辑捋清楚)
for (let i = 0; i < x; i++) {
    for (let j = 0; j < z; j++) {
        for (let k = 0; k < y; k++) {
            output[i][j] +=  xArr[i][k] * newArr[j][k];
        }
    }
}
output.forEach(a => console.log(a.join(' ')));


全部评论

相关推荐

09-04 21:52
南京大学 Java
牛马人的牛马人生:果然是华五的神
点赞 评论 收藏
分享
10-10 16:30
济宁学院 Java
不想做程序员:面试官:蓝桥杯三等奖?你多去两次厕所都能拿二等吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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