Python题解 | #素数伴侣#二分图匈牙利算法

素数伴侣

https://www.nowcoder.com/practice/b9eae162e02f4f928eac37d7699b352e

import sys
import math


def is_prime(x):
    for i in range(2, int(math.sqrt(x) + 1)):
        if x % i == 0:
            return False
    return True


def find(odd, visited, choose, evens):
    for j, even in enumerate(evens):
        if is_prime(odd + even) and not visited[j]:
            visited[j] = True
            if choose[j] == 0 or find(choose[j], visited, choose, evens):
                choose[j] = odd
                return True
    return False


while True:
    try:
        n = int(input())
        list1 = list(map(int, input().split(' ')))
        odds = []
        evens = []
        count = 0
        for i in list1:
            if i % 2 == 0:
                odds.append(i)
            else:
                evens.append(i)
        if len(odds) == 0 or len(evens) == 0:
            print(count)
            break
        choose = [0] * len(evens)
        for odd in odds:
            visited = [False] * len(evens)
            if find(odd, visited, choose, evens):
                count += 1
        print(count)
    except:
        break

全部评论

相关推荐

斯卡蒂味的鱼汤:我认为就是逃课实习的学生技术才靠谱
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务