矩阵加法

GitHub跳转原题关系图返回列表

逐行配对两个同形矩阵的元素,计算并输出对应位置的和。

OJ: noi_openjudge

题目 ID: ch0108-08

难度:入门

标签:矩阵模拟python

日期: 2026-07-30 23:01

题意

计算两个同为 n×mn\times m 的矩阵逐元素之和。

思路

保存第一个矩阵后,读取第二个矩阵的每行并与对应行 zip,对每对元素相加后立刻输出。

代码

cpp
#include <cstdio>

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

复杂度

总结

Python代码

python
row_count, column_count = map(int, input().split())
first = [list(map(int, input().split())) for _ in range(row_count)]

for row in first:
    second_row = map(int, input().split())
    print(*(left + right for left, right in zip(row, second_row)))

C++代码

cpp
#include <cstdio>

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

复杂度

时间复杂度为 O(nm)O(nm),保存第一个矩阵使用 O(nm)O(nm) 空间。

总结

同形矩阵运算的核心是对应位置配对。