题目意思: 给定一个集合s 以及集合的元素,要求找到最大的 d满足 d = a + b + c ,并且 a b c d互不相同
解题思路: 暴力枚举,3s足矣。注意要把元素相同情况给舍去即可。
代码:
#include <algorithm>
#include <iostream>
#include <cstring>
#include <string>
#include <vector>
#include <cstdio>
#include <stack>
#include <queue>
#include <set>
using namespace std;
#define MAXN 1010
int ans , flag;
int s[MAXN];
int main(){
//freopen("input.txt" , "r" , stdin);
int n , m , t;
while(scanf("%d" , &n) && n){
memset(s , 0 , sizeof(s)) ; flag = 0;
for(int i = 0 ; i < n ; i++) scanf("%d" , &s[i]);
sort(s , s+n);
for(int i = n-1 ; i >= 0 ; i--){
for(int j = n-1 ; j >= 0 ; j--){
if(j == i) continue;
for(int k = n-1 ; k >= 0 ; k--){
if(k == j || k == i) continue;
for(int g = n-1 ; g >= 0 ; g--){
if(g == i || g == j || g == k) continue;
if(s[i] == s[j]+s[k]+s[g]){
flag = 1 ; ans = s[i] ; break;
}
}
if(flag) break;
}
if(flag) break;
}
if(flag) break;
}
if(flag) printf("%d\n" , ans);
else printf("no solution\n");
}
return 0;
}