LuoguB2104 矩阵加法 题解

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;
}
posted @ 2021-12-15 21:48  Eason_AC  阅读(150)  评论(0)    收藏  举报