ZJYYC1192. 矩阵的加法(题解)
题目描述
在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。
矩阵是线性代数学中的常见工具;在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。
矩阵加法运算:两个矩阵的加是矩阵中对应的元素相加,相加的前提是:两个矩阵要是通行矩阵,即具有相同的行和列数。
输入两个n行m列的矩阵A和B,输出它们的和A+B。
输入描述
测试样例由多组测试数据组成。
每个样例包含若干行,第一行输入两个整数
n 和 m;接下来 n 行,每行输入 m 个整数a i j ,表示矩阵A;再下来 n 行,每行输入 m 个整数a i j,表示矩阵B;1≤n,m≤100,0≤a(i) ≤100
输出描述
对于每个样例,输出加法运算之后的矩阵。每个样例之后输出一个空行。
输入样例
测试样例1
输入
3 3
12 3 -5
1 -9 0
3 6 8
1 8 9
6 5 4
3 2 1
输出
13 11 4
7 -4 4
6 8 9
关于我的思路:
使用c++自带的STL容器中的vector容器定义三个数组,使用vector封装(简写为mA,mB,ret)
然后遍历数组,输入mA,mB;
然后将result数组的值赋为mA和mB的和,之后输出这个数组,为了避免格式错误,我使用了三目运算符,确保每个元素后面输出一个空格,然后换行
以下是代码:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m;
while (cin >> n >> m) {
vector<vector<int>> matrixA(n, vector<int>(m));
vector<vector<int>> matrixB(n, vector<int>(m));
vector<vector<int>> result(n, vector<int>(m));
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
cin >> matrixA[i][j];
}
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
cin >> matrixB[i][j];
}
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
result[i][j] = matrixA[i][j] + matrixB[i][j];
}
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
cout << result[i][j] << (j < m - 1 ? " " : "\n");
}
}
cout << endl;
}
return 0;
}