博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 2549 Sumsets
阅读量:6912 次
发布时间:2019-06-27

本文共 1218 字,大约阅读时间需要 4 分钟。

 

poj 2549

给出一个集合S,其中包含n个数字,请你选择四个数字a,b,c,d满足d=a+b+c,d要尽可能地大。

请注意选择的数字不能是同一个元素,(大小可以相同)

可以先固定d,把数字从大到小排一遍,然后先选d,在从1到n个元素中选一个a,(请注意a可以大于d,因为有可能d-a<0而且c+b<0),假如你选择了

a[i]-a[j]作为d-a,之后的元素可以在j+1之后查找,为什么?因为a,b,c,d其中的a,b,c肯定会有一个先后顺序,而且d减去其中的任何一个,都能顺利地找到另外两个,因此我们可以把a从从往后找,那么另外的两个元素肯定就在j后面了。

 

#include 
#include
#include
using namespace std;int a[1111];bool cmp(int x1,int x2){ return x1>x2;}int main(){ int n; while(cin>>n&&n) { for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1,cmp); int ans,flag=0; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(i==j) continue; int temp=a[i]-a[j]; for(int k=j+1;k<=n;k++) { for(int h=k+1;h<=n;h++) { if(a[k]+a[h]==temp) { ans=a[i]; flag=1; goto stop; } } } } } stop:; if(flag) cout<
<
View Code

 

转载于:https://www.cnblogs.com/zsyacm666666/p/4924200.html

你可能感兴趣的文章
[IOS笔记] - 关于线程[3]
查看>>
java socket通信-传输文件图片--传输图片
查看>>
Windows 10 远程连接出现函数错误 【这可能由于CredSSP加密Oracle修正】
查看>>
MySQL read_only选项的作用
查看>>
职业方向
查看>>
3DMAX 卸载工具,完美彻底卸载清除干净3dmax各种残留注册表和文件
查看>>
生日蜡烛
查看>>
移山小分队---每日记录01
查看>>
一文读懂机器学习,大数据/自然语言处理/算法全有了……
查看>>
【洛谷P1627】 【CQOI2009】中位数
查看>>
归并排序
查看>>
maven仓库介绍
查看>>
spring的corn表达式
查看>>
数学符号注音
查看>>
linux命令行关机
查看>>
Lync 小技巧-38-Lync Server 2013与Exchange Server高可用环境-集成
查看>>
[Everyday Mathematics]20150102
查看>>
Android学习笔记PreferenceFragment的使用
查看>>
用开源项目circular progress button实现有进度条的Button
查看>>
java基础篇---枚举详解
查看>>