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

tech2022-07-31  144

试题

代码

(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)
最新回复(0)