原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1090
思路:因为题目要求以三个数为关键字升序输出,又所求的是a+b+c=0,已知a,b即可找到对应的c,所以排序数组,并枚举a,b
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1005;
int a[MAXN];
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
bool flag = false;
sort(a, a + n);
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
long long val = -(1LL * a[i] + a[j]);
int p = lower_bound(a + j + 1, a + n, val) - a;
if (a[p] == val && p != n) {
printf("%d %d %d\n", a[i], a[j], a[p]);
flag = true;
}
}
}
if (!flag) printf("No Solution\n");
return 0;
}