题解 | #素数伴侣#

素数伴侣

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

#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>
#include<string.h>
int num[100];
int nums[100];
int cp[100][100];
bool used[100];
int numlen=0;
int numslen=0;
int who[100];
bool isprime(int figure) {
    int i;
    for (i = 2; i * i <= figure; i++) {
        if (figure % i == 0) {
            return false;
        }
    }
    return true;
}
int match(int i)//匈牙利算法
{
    for(int j=0;j<numslen;j++)
    {
        if(cp[i][j]==1&&used[j]==0)
        {
            used[j]=1;
            if(who[j]==-1||match(who[j]))
            {
                who[j]=i;
                return 1;
            }
        }
    }
    return 0;
}
int main() {
    int n;
    scanf("%d\n",&n);
    memset(num, 0, sizeof(num));
    memset(nums, 0, sizeof(nums));
    memset(who,-1,sizeof(who));
    for(int i=0;i<n;i++)
    {   
        int in;
        scanf("%d",&in);
        if(in%2==1) num[numlen++]=in;
        else nums[numslen++]=in;
    }
    for(int i=0;i<numlen;i++)
    {
        for(int j=0;j<numslen;j++)
        {
            if(isprime(num[i]+nums[j])) cp[i][j]=1;
            //else cp[i][j]=0;
        }
    }
    int sum=0;
    for(int i=0;i<numlen;i++)
    {
        memset(used, 0, sizeof(used));
        sum=sum+match(i);
    }
    printf("%d",sum);
}

全部评论

相关推荐

09-01 11:31
门头沟学院 Java
buul:七牛云的吧,感觉想法是好的,但是大家没那么多时间弄他这个啊。。。不知道的还以为他是顶尖大厂呢还搞比赛抢hc,只能说应试者的痛苦考察方是无法理解的,他们只会想一出是一出
点赞 评论 收藏
分享
09-04 00:41
中山大学 C++
鼠鼠能上岸吗:进行中是秋招大项目进行中,你还可以选别的岗位;已结束是这个岗位流程结束了;筛选中就是在简历筛选环节没hr捞
投递美团等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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