稀疏矩阵存储(10分) 题目内容: 稀疏矩阵是一系列数字,其中大部分项是0。存储稀疏矩阵的一个高效方式是字典,其中键是非0值的位置,值是序列中该位置对应的值。例如,序列0 0 0 0 0 4 0 0 2 9可以表示为字典{5:4,8:2,9:9}。编写函数sparseArraySum,参数是两个这样的字典a和b,得到一个表示向量和的稀疏矩阵。也就是说,结果中位置i的值是a和b中位置i上值的和。假设稀疏矩阵数字序列长度为10。 输入格式: 两个表示稀疏矩阵的数字序列,数字之间空格分隔,结尾无空格,回车换行输入下一个数字序列 输出格式: 一个表示稀疏矩阵求和结果的数字序列,数字之间空格分隔,结尾无空格 输入样例: 1 0 3 0 0 4 0 0 2 6 6 0 0 0 1 2 0 0 0 3 输出样例: 7 0 3 0 1 6 0 0 2 9 时间限制:500ms内存限制:32000kb
时间: 2024-03-07 13:47:48 浏览: 15
以下是Python代码实现:
```python
def sparseArraySum(a, b):
res = {}
for k, v in a.items():
res[k] = v + b.get(k, 0)
for k, v in b.items():
if k not in res:
res[k] = v
return res
a = list(map(int, input().split()))
b = list(map(int, input().split()))
a_dict = {i: a[i] for i in range(len(a)) if a[i] != 0}
b_dict = {i: b[i] for i in range(len(b)) if b[i] != 0}
res_dict = sparseArraySum(a_dict, b_dict)
res = [0] * 10
for k, v in res_dict.items():
res[k] = v
print(' '.join(map(str, res)))
```
解释如下:
首先,我们通过 input() 函数获取两个稀疏矩阵的数字序列,并将其存储在变量 a 和 b 中。然后,我们使用列表推导式将 a 和 b 转换成字典,其中字典的键为非零值的位置,值为对应位置上的值。
接下来,我们将 a 和 b 的字典作为参数传递给函数 sparseArraySum,并将返回值存储在变量 res_dict 中。函数 sparseArraySum 是一个自定义函数,用于计算两个稀疏矩阵的向量和,并返回结果的字典表示。
最后,我们将 res_dict 转换为长度为 10 的数字序列 res,其中 res[i] 表示位置 i 上的值。如果 res_dict 中没有对应位置的值,则默认为 0。最后,我们使用 join() 函数将 res 中的元素转换为字符串,并输出结果。