时间:2016-05-09 21:37:17 星期一
题目编号: [2016-05-09][51nod][1001 数组中和等于K的数对]
题目大意:给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对。
分析:直接暴力寻找
#include<stdio.h>#include<algorithm>using namespace std;const int maxn = 50000 + 10;int a[maxn];int main(){ int k,n; scanf("%d%d",&k,&n); for(int i = 0 ; i < n ; ++i){ scanf("%d",&a[i]); } sort(a,a+n); int i = 0,j = n - 1,tmp,flg = 1; while(i < j){ tmp = a[i] + a[j]; if(tmp == k){ printf("%d %d\n",a[i++],a[j--]);flg = 0; }else if(tmp < k) ++i; else --j; } if(flg) puts("No Solution"); return 0;}
#include<stdio.h>#include<set>using namespace std;int main(){ set<int> s; int n,tmp,k,flg = 1; scanf("%d%d",&k,&n); for(int i = 0 ; i < n ; ++i){ scanf("%d",&tmp); s.insert(tmp); } for(set<int>::iterator its = s.begin();its != s.end();++its){ tmp = k - *its; if(tmp <= *its) break; if(s.find(tmp) != s.end()){ printf("%d %d\n",*its,tmp); flg = 0; } } if(flg) puts("No Solution"); return 0;}