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;
}