题目
题目链接:
https://www.nowcoder.com/practice/bf358c3ac73e491585943bac94e309b0
思路
矩阵算法在图像处理、神经网络、模式识别等领域有着广泛的用途。
在矩阵乘法中,A矩阵和B矩阵可以做乘法运算必须满足A矩阵的列的数量等于B矩阵的行的数量。
运算规则:A的每一行中的数字对应乘以B的每一列的数字把结果相加起来。
参考下面的链接
https://blog.csdn.net/Lyon_yong/article/details/129474027
https://blog.csdn.net/why1472587/article/details/125080048
参考答案C++
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param a int整型vector<vector<>> 第一个矩阵
* @param b int整型vector<vector<>> 第二个矩阵
* @return int整型vector<vector<>>
*/
vector<vector<int> > solve(vector<vector<int> >& a, vector<vector<int> >& b) {
/*
矩阵算法在图像处理、神经网络、模式识别等领域有着广泛的用途。
在矩阵乘法中,A矩阵和B矩阵可以做乘法运算必须满足A矩阵的列的数量等于B矩阵的行的数量。
运算规则:A的每一行中的数字对应乘以B的每一列的数字把结果相加起来。
参考下面的链接
https://blog.csdn.net/Lyon_yong/article/details/129474027
https://blog.csdn.net/why1472587/article/details/125080048
*/
int arows = a.size(), acols = a[0].size();
int brows = b.size(), bcols = b[0].size();
//c=a*b c的行数=a的行数 c的列数=b的列数
vector<vector<int>> c(arows);
for (int row = 0; row < arows; row++) {
c[row] = vector<int>(bcols);
for (int col = 0; col < bcols; col++) {
// 运算规则:A的每一行中的数字对应乘以B的每一列的数字把结果相加起来。
int cursum = 0;
for (int idx = 0; idx < acols; idx++) {
cursum += a[row][idx] * b[idx][col];
}
c[row][col] = cursum;
}
}
return c;
}
};
参考答案Java
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param a int整型二维数组 第一个矩阵
* @param b int整型二维数组 第二个矩阵
* @return int整型二维数组
*/
public int[][] solve (int[][] a, int[][] b) {
/*
矩阵算法在图像处理、神经网络、模式识别等领域有着广泛的用途。
在矩阵乘法中,A矩阵和B矩阵可以做乘法运算必须满足A矩阵的列的数量等于B矩阵的行的数量。
运算规则:A的每一行中的数字对应乘以B的每一列的数字把结果相加起来。
参考下面的链接
https://blog.csdn.net/Lyon_yong/article/details/129474027
https://blog.csdn.net/why1472587/article/details/125080048
*/
int arows = a.length, acols = a[0].length; //a的行数和列数
int brows = b.length, bcols = b[0].length; //b的行数和列数
//c矩阵=a*b c的行数=a的行数 c的列数=b的列数
int[][] c = new int[arows][bcols];
for (int row = 0; row < arows; row++) {
for (int col = 0; col < bcols ; col++) {
int cussum = 0;
for (int idx = 0; idx < acols ; idx++) {
cussum += a[row][idx] * b[idx][col];
}
c[row][col] = cussum;
}
}
return c;
}
}
参考答案Go
package main
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param a int整型二维数组 第一个矩阵
* @param b int整型二维数组 第二个矩阵
* @return int整型二维数组
*/
func solve(a [][]int, b [][]int) [][]int {
/*
矩阵算法在图像处理、神经网络、模式识别等领域有着广泛的用途。
在矩阵乘法中,A矩阵和B矩阵可以做乘法运算必须满足A矩阵的列的数量等于B矩阵的行的数量。
运算规则:A的每一行中的数字对应乘以B的每一列的数字把结果相加起来。
参考下面的链接
https://blog.csdn.net/Lyon_yong/article/details/129474027
https://blog.csdn.net/why1472587/article/details/125080048
*/
arows := len(a)
acols := len(a[0])
//brows := len(b)
bcols := len(b[0])
//c=a*b c的行数=a的行数 c的列数=b的列数
c := make([][]int, arows)
for row := 0; row < arows; row++ {
c[row] = make([]int, bcols)
for col := 0; col < bcols; col++ {
//A的每一行中的数字对应乘以B的每一列的数字把结果相加起来。
cursum := 0
for idx := 0; idx < acols; idx++ {
cursum += a[row][idx] * b[idx][col]
}
c[row][col] = cursum
}
}
return c
}
参考答案PHP
<?php
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param a int整型二维数组 第一个矩阵
* @param b int整型二维数组 第二个矩阵
* @return int整型二维数组
*/
function solve( $a , $b )
{
/*
矩阵算法在图像处理、神经网络、模式识别等领域有着广泛的用途。
在矩阵乘法中,A矩阵和B矩阵可以做乘法运算必须满足A矩阵的列的数量等于B矩阵的行的数量。
运算规则:A的每一行中的数字对应乘以B的每一列的数字把结果相加起来。
参考下面的链接
https://blog.csdn.net/Lyon_yong/article/details/129474027
https://blog.csdn.net/why1472587/article/details/125080048
*/
$arows = count($a);
$acols = count($a[0]);
$brows=count($b);
$bcols =count($b[0]);
$c = []; //c=a*b c的行数=a的行数 c的列数=b的列数
for($row=0;$row<$arows;$row++){
for($col=0;$col<$bcols;$col++){
//A的每一行中的数字对应乘以B的每一列的数字把结果相加起来。
$cursum = 0;
for($idx=0;$idx<$acols;$idx++){
$cursum+= $a[$row][$idx]*$b[$idx][$col];
}
$c[$row][$col] = $cursum;
}
}
return $c;
}