CSP 202006-2 稀疏向量 python实现(非满分)(待更新)

试题

在这里插入图片描述
在这里插入图片描述

代码

(1)30分代码

# 读取n,a,b
# n表示向量u,v的维数,a,b分别表示u,v的非零值个数
n, a, b = [int(i) for i in input().split()]

# 创建两个二维队列存放u,v的信息
List1 = []
List2 = []
for i in range(a):
    line = input().split()
    c, d = line
    d = int(d)
    List1.append((c, d))
for i in range(b):
    line = input().split()
    c, d = line
    d = int(d)
    List2.append((c, d))

# 判断,对于两个二维数组中的元组,键相同时,将值相乘,存放在sum中
sum = 0

if len(List1) <= len(List2):
    # 准备工作,用队列来存放二维数组中的所有第一个值
    list2 = []
    for i in range(b):
        list2.append(List2[i][0])
    # 对短的那个二维队列进行遍历
    for i in range(a):
        if List1[i][0] in list2:
            found = list2.index(List1[i][0])
            sum += List1[i][1]*List2[found][1]
else:
    list1 = []
    for i in range(a):
        list1.append(List1[i][0])
    for i in range(a):
        if List2[i][0] in list1:
            found = list1.index(List1[i][0])
            sum += List1[found][1]*List2[i][1]

print(sum)

(2)60分代码

n,a,b = [int(i) for i in input().split()]

dict1 = {
    
    }
for i in range(a):
    line = input().split()
    c,d = line
    d = int(d)
    dict1[c] = d

dict2 = {
    
    }
for i in range(b):
    line = input().split()
    c,d = line
    d = int(d)
    dict2[c] = d

sum = 0
if len(dict1) <= len(dict2):
    for key in dict1.keys():
        if dict2.get(key):
            sum += dict1[key]*dict2[key]
else:
    for key in dict2.keys():
        if dict1.get(key):
            sum += dict1[key]*dict2[key]

print(sum)

猜你喜欢

转载自blog.csdn.net/weixin_44997802/article/details/108370485