天天看點

矩陣乘積

在 codewars 做練習題時遇到 一道矩陣相關的題目,一開始挺懵逼的,因為相關的的概念忘得差不多了,于是查了一下 資料 

可知矩陣 A、B 乘積 ( C=AB ) 滿足的條件是:

1、當矩陣A的列數等于矩陣B的行數時,A與B可以相乘。

2、矩陣C的行數等于矩陣A的行數,C的列數等于B的列數。

3、乘積C的第m行第n列的元素等于矩陣A的第m行的元素與矩陣B的第n列對應元素乘積之和 

根據已知條件和題目要求可解:

function getMatrixProduct(a, b) {
    //If a and b can be multiplied, returns the product of a and b as a two-dimensional array. Otherwise returns -1.
    if(a[0].length!==b.length) return -1
    let aRows=a.length
    let aCols=a[0].length
    let bRows=b.length
    let bCols=b[0].length
    let result=new Array(aRows)
    for(let i=0;i<aRows;i++){
      result[i]=new Array(bCols)
      for(let j=0;j<bCols;j++){
        result[i][j]=0
        for(let k=0;k<aCols;k++){
          result[i][j]+=a[i][k]*b[k][j]
        }
      }
    }
    return result
};