题解 | #素数伴侣#

素数伴侣

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

# 匈牙利算法
def match(i):
    for j in range(M):
        # 有边且未访问
        if matrix[i][j] == 1 and not visit[j]:
            visit[j] = True
            # 如果暂无匹配,或者原来匹配的元素可以找到新的匹配
            if matched[j] == -1 or match(matched[j]):
                matched[j] = i
                return True
    return False

while True:
    try:
        # 输入
        n = int(input())
        lst = list(map(int,input().split()))
    except:
        break
    else:
        # 分为奇偶元素
        evens,odds = [],[]
        for i in lst:
            if i % 2 == 0: evens.append(i)
            else: odds.append(i)
        N,M = len(evens),len(odds)
        # 创建空邻接矩阵
        matrix = []
        for i in range(N):
            temp = []
            for j in range(M):
                temp.append(0)
            matrix.append(temp)
        # 填充矩阵
        for i in range(N):
            for j in range(M):
                val = evens[i] +odds[j]
                if val <= 3:
                    matrix[i][j] = 1
                else:
                    flag = True
                    for k in range(2,int(val**0.5)+1):
                        if val%k == 0:  flag = False
                    if flag : matrix[i][j] = 1
        # 记录已匹配矩阵和已访问矩阵
        matched = [-1 for i in range(M)]
        # 开始匈牙利算法,进行匹配
        count = 0
        for i in range(N):
            visit = [False for j in range(M)]
            if match(i):
                count += 1
        print(count)
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利&nbsp;有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的&nbsp;真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
点赞 评论 收藏
分享
代码飞升:别用口语,后端就写后端,前端就写前端,最后别光后悔
点赞 评论 收藏
分享
程序员饺子:正常 我沟通了200多个 15个要简历 面试2个 全投的成都的小厂。很多看我是27直接不会了😅
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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