题目大意:给出一个集合,问集合里面是否有满足d = a+ b + c最大d(a,b,c,d都是集合里面的数字)
解题思路:先排序,d从最大的给,a也从最大的给,b从比a小的给,c取最小值,如果满足a+b+c=d,即满足条件,如果a+b+c < d,则让c变大,如果 a+b+c>d,则让b变小,具体请看代码
#include<cstdio>
#include<set>
#include<algorithm>
using namespace std;
long long num[1005];
int a,b,c,d;
int number;
bool judge() {
for(d = number - 1; d >= 0; d--)
for(a = number - 1; a > 0; a--)
for(b = a - 1, c = 0; b > c && a != d;)
if(num[d] == num[a] + num[b] + num[c])
return true;
else
num[d] > num[a] + num[b] + num[c] ? c+&#