B2104 矩阵加法

· · 题解

Content

给定两个 n\times m 的矩阵 A,B,求 C=A+B

数据范围:1\leqslant n,m\leqslant 100

Solution

我们观察到题目中给出的定义:矩阵加法的规则是两个矩阵中对应位置的值进行加和。我们不妨把它形式化地转化一下:设 C=A+B,则有:

C_{i,j}=A_{i,j}+B_{i,j}

然后就没有了,直接循环模拟 A,B 对应位置的元素和并加入 C 对应元素即可。

多提一嘴:当且仅当两个矩阵的大小相同时,这两个矩阵才能够进行加法运算。例如一个 2\times 3 的矩阵和一个 3\times 2 的矩阵不可以进行加法运算。

Code

这里又运用到了优化空间的方法,还是提一嘴吧。

我们可以将只在输入中有作用的数组直接当做变量来处理,这样可以优化空间。虽然在这道题目中没有体现,但是今后的信息学习中你将体会到这一点的作用。

#include <cstdio>
using namespace std;

int n, m, a[107][107];

int main() {
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; ++i) for(int j = 1; j <= m; ++j) scanf("%d", &a[i][j]);
    for(int i = 1; i <= n; ++i) for(int j = 1; j <= m; ++j) {int x; scanf("%d", &x), a[i][j] += x;}
    for(int i = 1; i <= n; ++i) {for(int j = 1; j <= m; ++j) printf("%d ", a[i][j]); puts("");}
    return 0;
}