矩阵乘积

在 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
};

 

posted @ 2018-11-15 09:47  _fn  阅读(780)  评论(0编辑  收藏  举报