1 条题解

  • 0
    @ 2025-8-24 21:07:20

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Eason_AC
    Remember? / AFOed on 2022.6.14 / 彻底死咯

    搬运于2025-08-24 21:07:19,当前版本为作者最后更新于2021-07-04 21:34:36,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    Content

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

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

    Solution

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

    Ci,j=Ai,j+Bi,jC_{i,j}=A_{i,j}+B_{i,j}

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

    多提一嘴:当且仅当两个矩阵的大小相同时,这两个矩阵才能够进行加法运算。例如一个 2×32\times 3 的矩阵和一个 3×23\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;
    }
    
    • 1

    信息

    ID
    6961
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    1
    已通过
    1
    上传者