洛谷-B2104 矩阵加法 Go语言
题目描述
输入两个 n 行 m 列的矩阵 A 和 B,输出它们的和 A+B,矩阵加法的规则是两个矩阵中对应位置的值进行加和,具体参照样例。
输入格式
第一行包含两个整数 n 和 m,表示矩阵的行数和列数 ( 1 ≤ n ≤ 100 , 1 ≤ m ≤ 100 1 \le n \le 100,1 \le m \le 100 1≤n≤100,1≤m≤100)。
接下来 n 行,每行 m 个整数,表示矩阵 A 的元素。
接下来 n 行,每行 m 个整数,表示矩阵 B 的元素。
相邻两个整数之间用单个空格隔开,每个元素均在 1 ∼ 1000 1 \sim 1000 1∼1000 之间。
输出格式
n 行,每行 m 个整数,表示矩阵加法的结果。相邻两个整数之间用单个空格隔开。
输入输出样例
输入 #1
3 3
1 2 3
1 2 3
1 2 3
1 2 3
4 5 6
7 8 9
输出 #1
2 4 6
5 7 9
8 10 12
解题
矩阵相加规则就是对应的位置的值进行相加
(
A
+
B
)
i
,
j
=
a
i
,
j
+
b
i
,
j
(A + B)_{i,j} = a_{i,j} + b_{i,j}
(A+B)i,j=ai,j+bi,j
package main
import (
"fmt"
)
func showSum(nums1 [][]int, nums2 [][]int) {
for i := 0; i < len(nums1); i++ {
for j := 0; j < len(nums1[0]); j++ {
fmt.Printf("%d ", nums1[i][j]+nums2[i][j]) // 按位相加
}
fmt.Println()
}
}
func main() {
var n, m int // 记录行和列
fmt.Scan(&n, &m) // 输入
// 初始化两个二维数组
nums1 := make([][]int, n)
for i, _ := range nums1 {
nums1[i] = make([]int, m)
}
nums2 := make([][]int, n)
for i, _ := range nums2 {
nums2[i] = make([]int, m)
}
// 输入矩阵的元素
for i := 0; i < n; i++ {
for j := 0; j < m; j++ {
fmt.Scan(&nums1[i][j])
}
}
for i := 0; i < n; i++ {
for j := 0; j < m; j++ {
fmt.Scan(&nums2[i][j])
}
}
// 输出相加结果
showSum(nums1, nums2)
}