基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题
 收藏
 取消关注
给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出"No"。
Input
  1. 1行,1个数NN为数组的长度(4 <= N <= 1000)
  2. 2 - N + 1行:A[i](-10^9 <= A[i] <= 10^9)
Output
  1. 如果可以选出4个数,使得他们的和为0,则输出"Yes",否则输出"No"
Input示例
  1. 5
  2. -1
  3. 1
  4. -5
  5. 2
  6. 4
Output示例
  1. Yes

刚开始使用算出两个数的和然后保存在数组中,将4sum将为2sum,因为在算两个数的和的时候,可能存在重复的情况,所以用if语句判断了一下

  1. #include<stdio.h>
  2. #include<algorithm>
  3. #include<string.h>
  4. const int M = ;
  5.  
  6. using namespace std;
  7.  
  8. typedef pair<int, int> P;
  9.  
  10. int main()
  11. {
  12. int n, Count, flage;
  13. int i, j;
  14. int b[M], a[M];
  15. P p[M];
  16.  
  17. scanf("%d", &n);
  18.  
  19. memset(a, , sizeof(a));
  20. memset(b, , sizeof(b));
  21.  
  22. for( i = ; i < n; i++ )
  23. {
  24. scanf("%d", &a[i]);
  25. }
  26.  
  27. Count = ;
  28.  
  29. for( i = ; i < n; i++ )
  30. {
  31. p[Count].first = a[i];
  32.  
  33. for( j = i+; j < n; j++)
  34. {
  35. p[Count].second = a[j];
  36. b[Count++] = a[i] + a[j];
  37. }
  38. }
  39.  
  40. for( i = ; i < Count; i++ )
  41. {
  42. for( j = ; j < Count; j++ )
  43. {
  44. if(p[i].first != p[j].first && p[i].second !=p[j].second && p[i].first != p[j].second && p[i].second != p[j].first)
  45. {
  46. flage = b[i] + b[j];
  47.  
  48. if(flage == )
  49. {
  50. printf("Yes\n");
  51.  
  52. return ;
  53. }
  54. }
  55.  
  56. }
  57. }
  58.  
  59. printf("No\n");
  60.  
  61. return ;
  62. }

结果提交的时候过了一半的数据,另外的一半被卡住了

Ac代码

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <algorithm>
  4. using namespace std;
  5. const int MAXN = + ;
  6.  
  7. int n, num[MAXN];
  8.  
  9. int main(){
  10. freopen("in.txt", "r", stdin);
  11.  
  12. int flag, tmp;
  13. while(scanf("%d", &n) != EOF){
  14. for(int i=; i<n; ++i){
  15. scanf("%d", &num[i]);
  16. }
  17. sort(num+, num+n);
  18. flag = ;
  19. for(int i=; i<n; ++i){
  20. if(flag){ break; }
  21. for(int j=i+; j<n; ++j){
  22. if(flag){ break; }
  23. int l = j+, r = n-;
  24. while(l < r){
  25. tmp = num[i] + num[j] + num[l] + num[r];
  26. if(tmp == ){
  27. flag = ;
  28. break;
  29. }else if(tmp > ){
  30. r--;
  31. }else{
  32. l++;
  33. }
  34. }
  35. }
  36. }
  37. if(flag){
  38. printf("Yes\n");
  39. }else{
  40. printf("No\n");
  41. }
  42. }
  43. return ;
  44. }

51 nod 1267 4个数和为0的更多相关文章

  1. 51Nod 1267 4个数和为0 二分

    给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出"No".Input第1行,1个数N,N为数组的长度(4 <= ...

  2. [51nod] 1267 4个数和为0 暴力+二分

    给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出"No". Input 第1行,1个数N,N为数组的长度(4 < ...

  3. 51nod 1267 4个数和为0

    基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出&qu ...

  4. 51nod 1267 4个数和为0 思路:哈希map+避免重复的点

    题目: 总结大佬们的思路: 思路1:所有数两两求和,存入map中,每次判断有没有相反数被标记过. 思路2:对所有数排序,排完所有数两两求和,结果正好是排好序的.然后扫一遍,二分查找看之前有没有相反数存 ...

  5. 51nod 1267:4个数和为0 哈希

    1267 4个数和为0 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出&qu ...

  6. 51 nod 1439 互质对(Moblus容斥)

    1439 互质对 题目来源: CodeForces 基准时间限制:2 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 有n个数字,a[1],a[2],…,a[n].有一个集合,刚开 ...

  7. 51 nod 1495 中国好区间

    1495 中国好区间 基准时间限制:0.7 秒 空间限制:131072 KB 分值: 80 难度:5级算法题   阿尔法在玩一个游戏,阿尔法给出了一个长度为n的序列,他认为,一段好的区间,它的长度是& ...

  8. 51 nod 1421 最大MOD值

    1421 最大MOD值 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 有一个a数组,里面有n个整数.现在要从中找到两个数字(可以 ...

  9. 51 nod 1681 公共祖先 (主席树+dfs序)

    1681 公共祖先 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题   有一个庞大的家族,共n人.已知这n个人的祖辈关系正好形成树形结构(即父亲向儿子连边). 在另 ...

随机推荐

  1. linux lcd设备驱动剖析三

    上一节文章中详细地剖析了probe函数,但是从始至终都没有看到打开读写文件接口的操作函数,只看到了下面这个操作结构体 [cpp] view plain? static struct fb_ops s3 ...

  2. vs2017发布web项目

    1.webform项目发布 1.右键选择项目. 2.选择自定义. 3.“配置文件名称”,发布后生成在项目中记录此次发布选择的配置信息文件名,下次发布默认为此次选择的配置信息,可以删除,随便填一个. 4 ...

  3. Window中的内存地址(小知识)

    现在的编辑器大部分工作都是内存管理托管型,所以很少直接对Window的内存地址直接管理了. Window中的内存地址主要是以16进制数字体现的,当操作系统为32位时,那么每个内存地址为2的32次方,也 ...

  4. 【phonegap】用本地浏览器打开网页

    <a id="ssl2" href="#" onclick="openLocalExplorer()">请点击跳到页面</ ...

  5. Python 中的 is 和 == 编码和解码

    一   is   与   ==   区别 ==    比较            比较的是值 例如: a = 'alex' b = 'alex' print(a == b) #True a = 10 ...

  6. Apple Ad Hoc

    Apple Ad Hoc 发布测试 App只能通过Ad Hoc分享给绑定我们账号的设备上,所以至是一百台 1.官网member Center创建Ad Hoc证书 2.在官网下载Ad Hoc证书到mac ...

  7. VMWARE 虚拟机新增硬盘,格式化分区,并挂载

    VMWARE 虚拟机新增 硬盘 并挂载 一台虚拟机上安装ORACLE12c 需要分一块硬盘挂载数据文件 日志文件 以及归档文件 1. 关闭虚拟机 2. 编辑虚拟机设置 选择[编辑虚拟机设置]并打开,将 ...

  8. selenium3加载浏览器

    浏览器禁用更新: 因为selenium对浏览器的支持是有限制的.当浏览器更新到最新版本时,需要下载支持最新版本的插件.有时候selenium还没有更新到支持最新版本的插件,但本地已经更新到最新版本了. ...

  9. css常见问题解决方法

    设置方法: div内的img和span都需要设置vertical-align:middle; 解决inline-block的空格: http://www.w3cplus.com/css/fightin ...

  10. 面试题:jsp九大内置对象

    我们常说的JSP有九大内置对象分别为:request.response.session.out.pagecontext.page.exception.application.config. 我们知道, ...