对于这题看完正解之后才知道该如何解决;
先分别输入数,并标记其出现的次数;
然后用Sort快排函数从小到大排序;
然后从左到右暴力枚举,看是否这个数出现过;
代码:
1 #include<iostream> 2 #include<stdio.h> 3 #include<algorithm> 4 #include<map> 5 using namespace std; 6 7 map<int,int> H; 8 int a[101]; 9 int main(void) 10 { 11 int n; 12 while(scanf("%d",&n)!=EOF) 13 { 14 H.clear(); //初始化为0 15 for(int i=1;i<=n;++i) 16 scanf("%d",&a[i]),H[a[i]]++; 17 sort(a+1,a+1+n); 18 int flag = 0; 19 for(int i=1;i<=n;++i) 20 { 21 H[a[i]]--; 22 for(int j=1;j<i;++j) 23 if(H[a[j]+a[i]]) 24 flag = 1; 25 if(flag) 26 break; 27 } 28 if(flag) 29 printf("YES\n"); 30 else 31 printf("NO\n"); 32 } 33 34 return 0; 35 }