Sumsets (暴力枚举 + STL)

思路:刚开始的思路是直接暴力枚举O(n3),感觉会超时,不过还是试着敲了下,居然过了,其中用STL中的set来找最后一个数,,最好先排下序,然后再枚举d(要求的)和a,b,再用set去找c

AC代码:

#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <set>using namespace std;int a[1005];int flag, ans;int main() {int n;while(scanf("%d", &n), n) {set<int> num;for(int i = 0; i < n; i++) {scanf("%d", &a[i]);num.insert(a[i]);}sort(a, a + n);flag = 0; ans = 2;for(int i = n – 1; i >= 0 && !flag; i–) {for(int j = 0; j < n && !flag; j++) {for(int k = j + 1; k < n && !flag; k++) {int tmp = a[i] – a[j] – a[k];if(i != j && i != k && tmp != a[i] && tmp != a[j] && tmp != a[k])if(num.count(tmp) ) {flag = 1;ans = a[i];}}}}if(flag) printf("%d\n", ans);else printf("no solution\n");}return 0;}

人总是珍惜未得到的,而遗忘了所拥有的

Sumsets (暴力枚举 + STL)

相关文章:

你感兴趣的文章:

标签云: