以下是实现稀疏矩阵相加的Python代码,使用三元组表作为存储结构。我们将遍历两个三元组表并进行合并操作。
```python
def matrix_addition(t1, t2, A, B):
C = []
i, j = 0, 0
while i < len(A) and j < len(B):
if A[i][0] == B[j][0] and A[i][1] == B[j][1]: # 如果行列相同
value = A[i][2] + B[j][2]
if value != 0: # 只有非零值才加入结果
C.append([A[i][0], A[i][1], value])
i += 1
j += 1
elif A[i][0] < B[j][0] or (A[i][0] == B[j][0] and A[i][1] < B[j][1]): # A的元素在前
C.append(A[i])
i += 1
else: # B的元素在前
C.append(B[j])
j += 1
# 添加剩余的A或B中的元素
while i < len(A):
C.append(A[i])
i += 1
while j < len(B):
C.append(B[j])
j += 1
return C
# 输入部分
t1, t2 = map(int, input().split())
A = [list(map(int, input().split())) for _ in range(t1)]
B = [list(map(int, input().split())) for _ in range(t2)]
C = matrix_addition(t1, t2, A, B)
# 输出三元组表C
for row in C:
print(*row)
```
### 上述代码中 `matrix_addition` 函数实现了以下功能:
1. 遍历两个三元组表 `A` 和 `B`,比较它们的行列索引。
2. 如果行列索引相同,则将对应的值相加,并判断是否为非零值。如果是非零值,则将其添加到结果三元组表 `C` 中。
3. 如果行列索引不同,则将较小索引的元素直接添加到结果三元组表 `C` 中。
4. 最后处理可能剩余的 `A` 或 `B` 中的元素。
---
### 示例输入输出
#### 输入:
```
4 3
0 0 1
0 2 3
1 1 7
2 2 5
0 1 2
0 2 1
1 1 3
```
#### 输出:
```
0 0 1
0 1 2
0 2 4
1 1 10
2 2 5
```
---
### 解释:
- 矩阵 A 的三元组表示为:`[(0, 0, 1), (0, 2, 3), (1, 1, 7), (2, 2, 5)]`
- 矩阵 B 的三元组表示为:`[(0, 1, 2), (0, 2, 1), (1, 1, 3)]`
- 结果矩阵 C 的三元组表示为:`[(0, 0, 1), (0, 1, 2), (0, 2, 4), (1, 1, 10), (2, 2, 5)]`
---