题目意思: 给定一个集合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; }