描述
给出一列备选整数,请问能否在其中选出三个(不能重复选取),使得它们的和等于一个给定数字呢?
#include<cstdio>
#include<cstring>
#include<set>
using namespace std;
multiset<int> s;
int a[5000 + 5];
int main() {
int n, T, k;
scanf("%d", &T);
while (T--) {
s.clear();
scanf("%d", &n);
for (int i = 0; i < n; i ++) {
scanf("%d", a + i);
s.insert(a[i]);
}
bool flag = false;
scanf("%d", &k);
for (int i = 0; i < n; i ++) {
for (int j = i + 1; j < n; j ++) {
int target = k - a[i] - a[j], min_count = 1;
// 在此处补充你的代码
}
if (flag) break;
}
puts(flag? "Yes": "No");
}
}
输入
输入包括多组测试数据。第一行一个整数T(1<=T<=20),表示测试数据数量。
接下来T组测试数据分别输入,对于每组测试数据,第一行一个整数n(1<=n<=1000),表示给出备选数字的个数;第二行n个用空格隔开的整数ai(-3*10^8<=ai<=3*10^8),表示备选数字列表;第三行一个整数k(-10^9<=k<=10^9),表示希望组合的数字。
输出
对于每组测试数据输出一行答案,如果能够选出三个数合成k,请输出"Yes"(不含引号),否则输出"No".
样例输入
4
10
1 2 3 4 5 6 7 8 9 10
8
10
1 2 3 4 5 6 7 8 9 10
5
4
1 1 1 1
3
4
1 2 9 10
4
样例输出
Yes
No
Yes
No