匈牙利算法编程c语言,华为oj之素数伴侣---匈牙利算法
版权声明:本文为博主原创文章,未经博主允许不得转载。
题目描述
若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如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之素数伴侣---匈牙利算法相关推荐
- 华为OJ(素数伴侣)
描述 题目描述若两个正整数的和为素数,则这两个正整数称之为"素数伴侣",如2和5.6和13,它们能应用于通信加密.现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选 ...
- 循环相乘取整法C语言,华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...
题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...
- 华为机试 素数伴侣 匹配匈牙利算法
题目描述 题目描述 若两个正整数的和为素数,则这两个正整数称之为"素数伴侣",如2和5.6和13,它们能应用于通信加密.现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数 ...
- 古典密码算法实验c语言,2021信息安全 实验一 古典密码算法C语言.docx
2021信息安全 实验一 古典密码算法C语言.docx 信息安全信息安全 实验一实验一 古典密码算法古典密码算法 C C 语言语言 信息安全实验报告 课程名称 _ 专业计算机科学与技术 _2010_级 ...
- c语言mn回文素数编程,C语言求回文素数代码及解析
原标题:C语言求回文素数代码及解析 问题描述 所谓回文素数指的是,对一个整数n从左向右和从右向左读其数值都相同且n为素数,则称整数为回文素数. 对于偶数位的整数,除了11以外,都不存在回文素数.即所有 ...
- 华为笔试题-素数伴侣
刷到这个题目的时候想起了国庆项目的人群映射,基本类似,在这里再记录一下. 前言 若两个正整数的和为素数,则这两个正整数称之为"素数伴侣",如2和5.6和13,它们能应用于通信加密. ...
- 华为oj题目c语言,华为OJ机试题目——24点游戏算法
对于这种题用程序实现只能是穷举的思想,而做法各异,如下代码是利用符号的不断变化,利用4个数计算值,默认是4个数字a,b,c,d是按顺序计算的,即默认是加了括号的,即(((a op1 b)op2 c)o ...
- 苹果和小虫编程c语言,【OJ题库C/C++】Day12-苹果和虫子2
总时间限制: 1000ms 内存限制: 65536kB 描述 你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子.虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小 ...
- c语言mn回文素数编程,C语言求回文素数
问题描述 所谓回文素数指的是,对一个整数n从左向右和从右向左读其数值都相同且n为素数,则称整数为回文素数. 对于偶数位的整数,除了11以外,都不存在回文素数.即所有的4位整数.6位整数. 8位整数-都 ...
最新文章
- Windows Socket编程笔记之最简单的小Demo
- Centos6.5升级gcc for qt5.3.1
- Oracle 登录时错误: ORA-01017: invalid username/password; logon denied
- 【java8中的时间操作】java8中获取月的最后一天或者总天数,JDK8 LocalDate AP
- BBAug: 一个用于PyTorch的物体检测包围框数据增强包
- C++---显示实例化与隐式实例化,显示调用与隐式调用
- Tokyo Tyrant (ttserver)的master-slave复制协议分析
- python 调用github的api,呈现python的受欢迎的程度
- mysql 联合查询去重复_两个表联合查询去重复GROUP_CONCAT
- Office Ribbon 界面开发入门教程:QtitanRibbon详解
- oracle判断除数为零,Oracle decode函数 除数为零
- 公共WiFi到底该不该连?
- php mocking,php – Mocking Static Eloquent Models方法包括find()
- win10电脑右击新建没有Word、Excel怎么办
- html中的li标签不换行,css li 不换行(布局,内容)
- java url地址不变_页面跳转后,浏览器地址栏地址保持不变
- 十三位时间戳转换工具_展览 | “无缘无故—十三位当代女性艺术家邀请展”亮相朗空美术馆...
- 无依赖单机尝鲜 Nebula Exchange 的 SST 导入
- python中英文翻译
- 远景在线(www.pcbeta.com):使用IE10登陆中国银行网银蓝屏或者死机的解决方案