C++程序 矩阵加法
给定两个 N x M 矩阵 。找到一个 N x M 矩阵作为给定矩阵的和,每个值是对应元素的值之和。
方法: 以下是解决问题的思路。
迭代矩阵 (i, j) 的每个单元格,添加两个矩阵的对应值,并将其存储在单个矩阵中,即结果矩阵。
按以下步骤执行:
- 初始化结果矩阵 res [N] [M]。
- 以每一行作为循环计数器 i ,每次迭代中:
- 以列作为循环计数器 j ,每次迭代中:
- 添加两个矩阵的索引 i,j 的值,并将其存储在 res [i] [j] 中。
- 以列作为循环计数器 j ,每次迭代中:
- 返回 res。
上述方法的实现如下:
// C++程序实现两个矩阵的加法
#include <bits/stdc++.h>
using namespace std;
#define N 4
// 这个函数将 A[][] 和 B[][] 相加,
// 并将结果存储在 C[][] 中
void add(int A[][N], int B[][N],
int C[][N])
{
int i, j;
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
C[i][j] = A[i][j] + B[i][j];
}
// 驱动程序
int main()
{
int A[N][N] = {{1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3},
{4, 4, 4, 4}};
int B[N][N] = {{1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3},
{4, 4, 4, 4}};
// 存储结果
int C[N][N];
int i, j;
add(A, B, C);
cout << "Result matrix is " <<
endl;
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
cout << C[i][j] << " ";
cout << endl;
}
return 0;
}
输出:
结果矩阵是
2 2 2 2
4 4 4 4
6 6 6 6
8 8 8 8
该程序可以扩展到矩形矩阵。下面的文章可能有助于扩展此程序:如何在 C 中将 2D 数组作为参数传递? 上述程序的时间复杂度为 O(n 2 )。 上述问题的辅助空间为 O(n 2 )。