版权声明:本文为博主原创文章,未经博主允许不得转载。

题目描述

若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用于通信加密。现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选出若干对组成“素数伴侣”,挑选方案多种多样,例如有4个正整数:2,5,6,13,如果将5和6分为一组中只能得到一组“素数伴侣”,而将2和5、6和13编组将得到两组“素数伴侣”,能组成“素数伴侣”最多的方案称为“最佳方案”,当然密码学会希望你寻找出“最佳方案”。

输入:

有一个正偶数N(N≤100),表示待挑选的自然数的个数。后面给出具体的数字,范围为[2,30000]。

输出:

输出一个整数K,表示你求得的“最佳方案”组成“素数伴侣”的对数。

输入描述:

输入说明

1 输入一个正偶数n

2 输入n个整数

输出描述:

求得的“最佳方案”组成“素数伴侣”的对数。

输入例子:

4

2 5 6 13

输出例子:

2

分析:素数和一定是奇数和偶数相加的结果,先把输入的数分成奇偶两部分,然后再用匈牙利算法

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

typedef int bool;

#define false 0

#define true 1

#define N 100

int edge[N][N],cx[N],cy[N];//edge记录两点的关系,如果两点相连,则edge【i】【j】为1int visited[N];//判断该店是否被访问过int nx,ny,res;

bool isprime (int m,int n)//判断和是否为素数{

int flag,i,sum=m+n;

flag=true;

for(i=2;i//如果y集合中的v元素没有匹配或者是v已经匹配,但是从cy[v]中能够找到一条增广路{

cx[u]=v;

cy[v]=u;

return 1;

}

}

}

return 0;

}

int main()

{

int n;

while(scanf("%d",&n)!=EOF)

{

int i,j,a[100]={0},a1[100]={0},a2[100]={0};

nx=0,ny=0,res=0;

memset(cx,0xff,sizeof(cx));//初始值为-1表示两个集合中都没有匹配的元素!memset(cy,0xff,sizeof(cy));

memset(edge,0,sizeof(edge));

for(i=0;i

{

scanf("%d",&a[i]);

if(a[i]%2==1)

a1[nx++]=a[i];

else

a2[ny++]=a[i];

}

for(i=0;i

{

for(j=0;j

{

if(isprime(a1[i],a2[j]))

edge[i][j]=1;

}

}

for(i=0;i

{

if(cx[i]==-1)

{

memset(visited,0,sizeof(visited));

res+=path(i);

}

}

printf("%d\n",res);

}

}

匈牙利算法编程c语言,华为oj之素数伴侣---匈牙利算法相关推荐

  1. 华为OJ(素数伴侣)

    描述 题目描述若两个正整数的和为素数,则这两个正整数称之为"素数伴侣",如2和5.6和13,它们能应用于通信加密.现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选 ...

  2. 循环相乘取整法C语言,华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...

  3. 华为机试 素数伴侣 匹配匈牙利算法

    题目描述 题目描述 若两个正整数的和为素数,则这两个正整数称之为"素数伴侣",如2和5.6和13,它们能应用于通信加密.现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数 ...

  4. 古典密码算法实验c语言,2021信息安全 实验一 古典密码算法C语言.docx

    2021信息安全 实验一 古典密码算法C语言.docx 信息安全信息安全 实验一实验一 古典密码算法古典密码算法 C C 语言语言 信息安全实验报告 课程名称 _ 专业计算机科学与技术 _2010_级 ...

  5. c语言mn回文素数编程,C语言求回文素数代码及解析

    原标题:C语言求回文素数代码及解析 问题描述 所谓回文素数指的是,对一个整数n从左向右和从右向左读其数值都相同且n为素数,则称整数为回文素数. 对于偶数位的整数,除了11以外,都不存在回文素数.即所有 ...

  6. 华为笔试题-素数伴侣

    刷到这个题目的时候想起了国庆项目的人群映射,基本类似,在这里再记录一下. 前言 若两个正整数的和为素数,则这两个正整数称之为"素数伴侣",如2和5.6和13,它们能应用于通信加密. ...

  7. 华为oj题目c语言,华为OJ机试题目——24点游戏算法

    对于这种题用程序实现只能是穷举的思想,而做法各异,如下代码是利用符号的不断变化,利用4个数计算值,默认是4个数字a,b,c,d是按顺序计算的,即默认是加了括号的,即(((a op1 b)op2 c)o ...

  8. 苹果和小虫编程c语言,【OJ题库C/C++】Day12-苹果和虫子2

    总时间限制: 1000ms 内存限制: 65536kB 描述 你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子.虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小 ...

  9. c语言mn回文素数编程,C语言求回文素数

    问题描述 所谓回文素数指的是,对一个整数n从左向右和从右向左读其数值都相同且n为素数,则称整数为回文素数. 对于偶数位的整数,除了11以外,都不存在回文素数.即所有的4位整数.6位整数. 8位整数-都 ...

最新文章

  1. Windows Socket编程笔记之最简单的小Demo
  2. Centos6.5升级gcc for qt5.3.1
  3. Oracle 登录时错误: ORA-01017: invalid username/password; logon denied
  4. 【java8中的时间操作】java8中获取月的最后一天或者总天数,JDK8 LocalDate AP
  5. BBAug: 一个用于PyTorch的物体检测包围框数据增强包
  6. C++---显示实例化与隐式实例化,显示调用与隐式调用
  7. Tokyo Tyrant (ttserver)的master-slave复制协议分析
  8. python 调用github的api,呈现python的受欢迎的程度
  9. mysql 联合查询去重复_两个表联合查询去重复GROUP_CONCAT
  10. Office Ribbon 界面开发入门教程:QtitanRibbon详解
  11. oracle判断除数为零,Oracle decode函数 除数为零
  12. 公共WiFi到底该不该连?
  13. php mocking,php – Mocking Static Eloquent Models方法包括find()
  14. win10电脑右击新建没有Word、Excel怎么办
  15. html中的li标签不换行,css li 不换行(布局,内容)
  16. java url地址不变_页面跳转后,浏览器地址栏地址保持不变
  17. 十三位时间戳转换工具_展览 | “无缘无故—十三位当代女性艺术家邀请展”亮相朗空美术馆...
  18. 无依赖单机尝鲜 Nebula Exchange 的 SST 导入
  19. python中英文翻译
  20. 远景在线(www.pcbeta.com):使用IE10登陆中国银行网银蓝屏或者死机的解决方案

热门文章

  1. 数据即服务(DaaS)
  2. 什么是IC封测?语音芯片封装与测试的流程步骤
  3. STM32F4+DP83848以太网通信指南系列(一):知识储备
  4. html代码 小球上下波动,HTML5CSS3特效-上下跳动的小球-遁地龙卷风
  5. 气象数据分析之EMD方法介绍及python的实现
  6. 恒生电子面试过程纪录
  7. Incomplete chess boards 有趣.
  8. 面向对象,面向对象的优点
  9. 数据分类分析--聚类
  10. java反转函数_在JAVA中,下列哪个函数可用于字符串的反转?