题解
矩阵相加
1 条题解
-
0
解题思路
矩阵加法怎么算?
两个矩阵 A 和 B 都是 n 行 m 列。相加的规则非常简单:对应位置的值相加。
也就是说,结果矩阵第 i 行第 j 列的数 = A[i][j] + B[i][j]。
怎么用程序实现?
- 先读入矩阵 A,把它的所有数存进二维数组
a; - 再读矩阵 B 时,可以边读边算:每读到一个 B 的元素
x,立刻输出a[i][j] + x,这样就不需要再开一个数组存 B 了; - 注意输出的格式:同一行里两个数之间用空格隔开,每输出完一行就换行。
验证样例: A 第一行 1 2 3,B 第一行 1 2 3,相加得 2 4 6,与输出一致。
参考代码
// P4507 矩阵相加:A和B对应位置的值相加 #include <iostream> using namespace std; int main() { int n, m, a[105][105], x; cin >> n >> m; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) cin >> a[i][j]; // 读入矩阵A for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cin >> x; // 边读B边算 cout << a[i][j] + x << " "; // 对应位置相加 } cout << endl; } return 0; }复杂度分析
设矩阵有 n 行 m 列。
- 时间:读入 A 要访问 n×m 个格子,读 B 和输出也各是 n×m 个格子,时间复杂度是 O(n×m);
- 空间:需要一个 n 行 m 列的二维数组存矩阵 A,空间复杂度是 O(n×m)。
- 先读入矩阵 A,把它的所有数存进二维数组
- 1