1 匈牙利算法是一种在多项式时间内求解任务分配问题的组合优化算法
2代码
# 判断素数
def issu(x):
tem = 2
while tem ** 2 <= x:
if x % tem == 0:
return False
tem += 1
return True
#匈牙利算法
def find(a, l1, l2, l3):
for i in range(0, len(l3)): #扫描每一个妹子 l2=match
#有暧昧并且没有标记过
if issu(a + l3[i]) and l1[i] == 0:
l1[i] = 1 #找到了并标记
#名花无主或者能腾出位置来,使用递归
if l2[i] == 0 or find(l2[i], l1, l2, l3):
#更新配对关系
l2[i] = a
return True
return False
while True:
try:
n = int(input())
l = list(map(int, input().split()))
odd, even = [], []
for i in range(n):
if l[i] % 2 == 0:
even.append(l[i])
else:
odd.append(l[i])
count = 0
match = [0] * len(even)
for i in range(0, len(odd)):
used = [0] * len(even)
if find(odd[i], used, match, even):
count += 1
print(count)
except:
break