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

 
Input
第1行,1个数N,N为数组的长度(0 <= N <= 1000)
第2 - N + 1行:A[i](-10^9 <= A[i] <= 10^9)
Output
如果没有符合条件的组合,输出No Solution。
如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则继续按照第二小的数排序。每行3个数,中间用空格分隔,并且这3个数按照从小到大的顺序排列。
Input示例
7
-3
-2
-1
0
1
2
3
Output示例
-3 0 3
-3 1 2
-2 -1 3
-2 0 2
-1 0 1 二重循环+二分 O(N^2LogN)
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std; int a[]; bool binary_find(int l, int r, int x)
{
while (l <= r) {
int m = (l+r)>>;
if (a[m] > x)
r = m - ;
else if (a[m] < x)
l = m + ;
else
return ;
}
return ;
} int main()
{
//freopen("1.txt", "r", stdin);
int n;
scanf("%d", &n);
for (int i = ; i < n; i++)
scanf("%d", &a[i]);
sort(a, a+n);
int flag = ;
for (int i = ; i < n; i++) {
for (int j = i+; j < n; j++) {
int x = -(a[i]+a[j]);
// printf("%d %d %d\n", a[i], a[j], x);
if (binary_find(j+, n-, x)) {
printf("%d %d %d\n", a[i], a[j], x);
flag = ;
}
}
}
if (!flag) printf("No Solution\n"); return ;
}

更快的二分 同时搜索两个数

#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std; int a[]; int main()
{
//freopen("1.txt", "r", stdin);
int n;
scanf("%d", &n);
for (int i = ; i < n; i++)
scanf("%d", &a[i]);
sort(a, a+n); int flag = ;
for (int i = ; i < n; i++) {
int j, k, x;
j = i+;
k = n-;
while (j < k) {
x = a[i]+a[j]+a[k];
if (x < )
j++;
else if (x > )
k--;
else {
printf("%d %d %d\n", a[i], a[j], a[k]);
flag = ;
j++; k--;
}
}
}
if (!flag) printf("No Solution\n"); return ;
}
 

最新文章

  1. js ajax php分页组件
  2. 关于WM_GETTEXT的应用
  3. js操作json与字符串相互转换
  4. CentOS7 SSH相关
  5. ajax获取城市和相应的地区
  6. 面向新手的Webserver搭建(一)——IIS的搭建
  7. Request 分别获取具有相同 name 属性表单元素值
  8. 给你的git仓库瘦身
  9. 第七十三节,css盒模型
  10. redis的持久化之RDB的配置和原理
  11. Python爬虫基础之正则表达式
  12. 存储库之MongoDB、mysql
  13. 你真的懂redis的数据结构了吗?redis内部数据结构和外部数据结构揭秘
  14. Dijkstra——单源最短路径
  15. Let&#39;sencrypt.sh 抛出异常: Response: &lt;urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)&gt;
  16. 协议无关组播-密集模式 PIM-DM
  17. STM32 GPIO 配置之ODR, BSRR, BRR 详解
  18. JAVA线程本地变量ThreadLocal和私有变量的区别
  19. Spark学习散点总结
  20. Python开发基础-Day5-字符编码、文件处理和函数基础(草稿)

热门文章

  1. 第1章WCF简介(WCF全面解析读书笔记2)
  2. Opencv Canny
  3. cocoapods使用问题集锦(2017-04)
  4. Docker CE部署
  5. word 标题序号
  6. HTTP/2协议
  7. phpmailer配置163邮箱
  8. JMS 之 Active MQ的安全机制
  9. redhad系统配置daocloud加速器
  10. python学习的一点点心得