给出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
  2.  
  3. 暴力+排序+二分
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. int a[];
  7.  
  8. int main()
  9. {
  10. //freopen("1.txt", "r", stdin);
  11. int n;
  12. scanf("%d", &n);
  13. for (int i = ; i < n; i++)
  14. scanf("%d", &a[i]);
  15. sort(a, a+n);
  16.  
  17. for (int i = ; i < n; i++)
  18. for (int j = i+; j < n; j++) {
  19. int k, m, sum;
  20. k = j+;
  21. m = n-;
  22. while (k < m) {
  23. sum = a[i]+a[j]+a[k]+a[m];
  24. if (sum < ) {
  25. k++;
  26. }
  27. else if (sum > ) {
  28. m--;
  29. }
  30. else {
  31. k++; m--;
  32. printf("Yes\n");
  33. return ;
  34. }
  35. }
  36. }
  37. printf("No\n");
  38.  
  39. return ;
  40. }
  1. 还有个很好的思路,先把数组中任意两个数存起来,再从小到大排序,类似二分的思想从两头开始查找,是否满足sum1+sum2==0 并且两个坐标不重叠,每个点只选一次
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. int a[];
  7. struct node
  8. {
  9. int x, y;
  10. int sum;
  11. }P[*];
  12.  
  13. int cmp(node a, node b)
  14. {
  15. return a.sum < b.sum;
  16. }
  17.  
  18. int main()
  19. {
  20. freopen("1.txt", "r", stdin);
  21. int n;
  22. scanf("%d", &n);
  23. for (int i = ; i < n; i++)
  24. scanf("%d", &a[i]);
  25.  
  26. int k = ;
  27. for (int i = ; i < n; i++)
  28. for (int j = i+; j < n; j++) {
  29. P[k].x = a[i];
  30. P[k].y = a[j];
  31. P[k++].sum = a[i]+a[j];
  32. }
  33. sort(P, P+k, cmp);
  34. int l = , r = k-;
  35. int flag = ;
  36. while (l < r) {
  37. if (P[l].sum+P[r].sum== && P[l].x!=P[r].x && P[l].y!=P[r].y
  38. && P[l].x!=P[r].y && P[l].y != P[r].x) {
  39. flag = ;
  40. break;
  41. }
  42. else if (P[l].sum+P[r].sum < )
  43. l++;
  44. else r--;
  45. }
  46. if (flag) printf("Yes\n");
  47. else printf("No\n");
  48.  
  49. return ;
  50. }
  1.  
  1.  

[51nod] 1267 4个数和为0 暴力+二分的更多相关文章

  1. [51nod] 1090 3个数和为0 暴力+二分

    给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等.从中找出所有和 = 0的3个数的组合.如果没有这样的组合,输出No Solution.如果有多个,按照3个数中最小的数从小到 ...

  2. 51Nod 1090 3个数和为0(暴力)

    1090 3个数和为0 基准时间限制:1 秒 空间限制:131072 KB 分值: 5         难度:1级算法题 给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等.从 ...

  3. 51nod 1090 3个数和为0【二分】

    1090 3个数和为0 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等.从 ...

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

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

  5. 51nod 1267 4个数和为0

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

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

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

  7. 51Nod 1090 3个数和为0 set 二分优化

    给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等.从中找出所有和 = 0的3个数的组合.如果没有这样的组合,输出No Solution.如果有多个,按照3个数中最小的数从小到 ...

  8. 51 nod 1267 4个数和为0

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

  9. 51nod——T1267 4个数和为0

    https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1267 题目描述 给出N个整数,你来判断一下是否能够选出4个数,他们的和 ...

随机推荐

  1. discuz论坛搬家

    很多站长第一次做网站的时候,无奈选择了速度不是很稳定的空间,慢慢会发现有很多物美价廉速度相当快的空间 这个时候,站长在网站搬家的过程中就会遇到很多困难,今天老袋鼠给大家详细讲解一下discuz论坛搬家 ...

  2. ABAP-创建物料主数据

    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA' *&------------------------------------------------------- ...

  3. 7-3 堆栈模拟队列(25 point(s)) 【数据结构】

    7-3 堆栈模拟队列(25 point(s)) 设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数: int IsFull(Stac ...

  4. 玩转Google开源C++单元测试框架Google Test系列(gtest)(总)

    原文地址:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Goo ...

  5. HDU 4539 郑厂长系列故事——排兵布阵 —— 状压DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4539 郑厂长系列故事——排兵布阵 Time Limit: 10000/5000 MS (Java/Ot ...

  6. html5 canvas画饼

    1. [图片] lxdpie.jpg ​2. [文件] lqdpie.html ~ 801B     下载(7) <!DOCTYPE HTML PUBLIC "-//W3C//DTD ...

  7. 织梦简洁机械设备dedecms模板

    织梦简洁机械设备dedecms模板,个人网站模板,dedecms模板. 模板地址:http://www.huiyi8.com/sc/7269.html

  8. Redis常用数据结构和操作

    1.String 存入字符类型 Set name luowen 设置name = luowen 存储 Get name 获取设置好的name的值 Setnx name luowen 设置name键值为 ...

  9. 迁移学习——使用Tensorflow和VGG16预训模型进行预测

    使用Tensorflow和VGG16预训模型进行预测 from:https://zhuanlan.zhihu.com/p/28997549   fast.ai的入门教程中使用了kaggle: dogs ...

  10. ES搜索排序,文档相关度评分介绍——TF-IDF—term frequency, inverse document frequency, and field-length norm—are calculated and stored at index time.

    Theory Behind Relevance Scoring Lucene (and thus Elasticsearch) uses the Boolean model to find match ...