华为oj素数伴侣
来源:互联网 发布:电信云计算发展前景 编辑:程序博客网 时间:2024/05/08 12:12
输入说明
1 输入一个正偶数n
2 输入n个整数
求得的“最佳方案”组成“素数伴侣”的对数。
对于这个题,我觉得题目的本意应该是使用匈牙利算法 计算最大匹配的问题,因为对于两个数的和为一个素数的话,必然是一个奇数一个偶数的组合,所以可以分为两个集合,来求二分图的最大匹配问题,但是博主当时也没想太多,就用了全排列来讨论所有的可能。这是最直接的想法,下面是c++实现的素数伴侣的代码
#include <iostream>#include <algorithm>using namespace std;int maxx = 0;int main(){bool sushu(int x,int y);void permutation(int* str,int length) ;int n;cin >> n;int * pi = new int[n];for (int i = 0; i < n;i++)cin >> pi[i];permutation(pi,n);cout << maxx << endl;return 0;}bool sushu(int x,int y){int i,N;N = x + y;int flag=true;if (N==1) return 0;if (N==2) return 1;for (i=2;i<=sqrt(N);i++){if (N%i==0) {flag=false;break;}}return flag;}void permutation(int* str,int length) { int count = 0; sort(str,str+length); do { for(int i=0;i<length;i+=2) {if (sushu(str[i],str[i+1]))count++;}if (maxx < count)maxx = count;count = 0; }while(next_permutation(str,str+length)); }
next_permutation()函数是c++提供了高效全排列算法,在使用这个函数的时候,一定要做排序处理。
0 0
- 华为oj素数伴侣
- 华为OJ(素数伴侣)
- 【华为OJ】【074-素数伴侣】
- 华为oj中级 素数伴侣
- 华为OJ——素数伴侣
- 华为oj之素数伴侣---匈牙利算法
- 华为OJ之素数伴侣-匈牙利算法
- 华为oj素数伴侣,利用匈牙利算法求解
- 华为OJ<武研所>——素数伴侣
- 华为OJ训练之0036-170112-素数伴侣
- 华为OJ_2129_素数伴侣
- 华为素数伴侣题目
- 华为机试---素数伴侣
- 华为机试--素数伴侣
- 素数伴侣
- 素数伴侣
- 素数伴侣
- OJ中-----素数伴侣(二分图,匈牙利算法)*?
- iOS常用设计模式:MVC(Model-View-Controller)
- Jenkins进阶系列之——08Jenkins纳入版本控制
- hql不能使用Limit的解决方法
- Hadoop之Hive学习
- UIWebView的使用方法
- 华为oj素数伴侣
- Jenkins进阶系列之——09配置Linux系统ssh免密码登陆
- Xcode 6制作动态及静态Framework
- Jenkins进阶系列之——10Publish Over SSH插件
- 115. Distinct Subsequences
- Jenkins进阶系列之——11修改Jenkins用户的密码
- [Spring实战系列](7)Spring注入方式之构造器注入
- Jenkins进阶系列之——12详解Jenkins节点配置
- JAVA代理与反射学习笔记(一)