题解 | #矩阵乘法#
矩阵乘法
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)