ACM_四数之和
2024-08-30 09:38:52
四数之和
Time Limit: 2000/1000ms (Java/Others)
Problem Description:
有n个不同的整数,判断能否从中选4次,4个数和刚好为m。数字可重复选取。
Input:
输入包含多组测试,每组测试第一行是两个数n(1<=n<=)和m(0<=m<=10^9)。
第二行是n个数a1,a2,a3...an(0<=ai<=10^8);
Output:
对于每组测试,如果能从中找出4个数和为m,则输出YES,否则输出NO。
Sample Input:
5 10
1 2 3 4 5
3 10
1 3 5
3 9
1 3 5
Sample Output:
YES
YES
NO
解题思路:因为四数和中选取的每个数字可以重复,因此我们可以先将每每两个数的和存放到set容器中(注意元素具有唯一性即不重复性),然后使用find()来查找set中是否有m-*it这个元素即可,思路清晰,代码可以过,不超时!忽略系数,此解法时间复杂度是O(n^2)。
AC代码:
#include<bits/stdc++.h>
using namespace std;
int a[],n,m;
set<int> t;
bool findt(int obj){ //find()返回迭代器在容器中的位置
return t.find(obj)==t.end();
}
int main()
{
while(cin>>n>>m){
t.clear();
for(int i=;i<n;++i)
cin>>a[i];
for(int i=;i<n;++i)
for(int j=;j<n;++j)
t.insert(a[i]+a[j]); //每每两个数相加
bool flag=false; //标记set中是否有这个元素
for(set<int>::iterator it=t.begin();it!=t.end();++it)
if(!findt(m-*it)){flag=true;break;}
if(flag)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return ;
}
最新文章
- history.back新页面跳转
- equals标准写法
- scrapy爬虫框架入门实例(一)
- PL/SQL显示行号和高亮当前行
- java之多线程的理解
- Android取得屏幕的高度和宽度
- 采用UltraISO制作U菜Win7安装盘,显现&;quot;File not find /BOOT/CDMENU.EZB.ezb&;quot;错误
- PHP环境搭建——Apache
- (十七)TableView的本地性能优化
- python崩溃到现在居然还没有放弃的Day07
- trackerClient.getConnection()为null
- C++ 面向对象的三大特性和五个原则
- 两行 CSS 代码实现图片任意颜色赋色技术
- [再寄小读者之数学篇](2014-06-22 发散级数 [中国科学技术大学2012年高等数学B考研试题])
- 浏览器行为模拟之requests、selenium模块
- C++ dynamic reflection
- UML图基础知识
- PHP中require(),include(),require_once()和include_once()有什么区别
- jQuery1.9+ 废弃的函数和方法 升级Jquery版本遇到的问题
- mxnet卷积神经网络训练MNIST数据集测试
热门文章
- ajax异步获取数据后动态向表格中添加数据(行)
- hdu -1251 统计难题(字典树水题)
- Elasticsearch自定义客户端(TransportClient)资源池
- html5视频播放器 二 (功能实现及播放优化)
- NOIP 2010 机器翻译
- 洛谷 P4057 [Code+#1]晨跑
- 条款三:尽量用new和delete而不用malloc和free
- ym——Android怎样支持多种屏幕
- 【CERC2008】【BZOJ4319】Suffix reconstruction
- 抢占式内核与非抢占式内核中的自旋锁(spinlock)的差别