题解 | #矩阵乘法#
矩阵乘法
https://www.nowcoder.com/practice/ebe941260f8c4210aa8c17e99cbc663b
package main
import (
"fmt"
)
func multi(a []int, b []int) int {
var sum int
for i:=0; i<len(a); i++ {
sum += a[i] * b[i]
}
return sum
}
func multiMatrix(a [][]int, b [][]int) [][]int {
rowA, _ := len(a), len(a[0])
rowB, colB := len(b), len(b[0])
rowC, colC := rowA, colB
// 初始化结果矩阵
c := make([][]int, rowC)
for i:=0; i<rowC; i++ {
c[i] = make([]int, colC)
}
for i:=0; i<rowC; i++ {
for j:=0; j<colC; j++ {
// 计算每一个位置的结果
var arr1, arr2 []int
arr1 = a[i]
for k:=0; k<rowB; k++ {
arr2 = append(arr2, b[k][j])
}
c[i][j] = multi(arr1, arr2)
}
}
return c
}
func main() {
var rowA int
var colA int
var rowB int
var colB int
fmt.Scan(&rowA, &colA, &colB)
rowB = colA
a := make([][]int, rowA)
for i:=0; i<rowA; i++ {
a[i] = make([]int, colA)
}
b := make([][]int, rowB)
for i:=0; i<rowB; i++ {
b[i] = make([]int, colB)
}
for i:=0; i<rowA; i++ {
for j:=0; j<colA; j++ {
var num int
fmt.Scan(&num)
a[i][j] = num
}
}
for i:=0; i<rowB; i++ {
for j:=0; j<colB; j++ {
var num int
fmt.Scan(&num)
b[i][j] = num
}
}
// fmt.Printf("a: %+v\n", a)
// fmt.Printf("b: %+v\n", b)
c := multiMatrix(a, b)
for i:=0; i<len(c); i++ {
for j:=0; j<len(c[0]); j++ {
fmt.Printf("%d ", c[i][j])
}
fmt.Println()
}
}
// 本题输入为两个整形矩阵,所以采用 fmt.Scan(&num)
查看15道真题和解析
vivo公司福利 691人发布