两种方法 set容器和二分,不懂set容器看我这一篇文章 http://blog.csdn.net/su20145104009/article/details/44562659
#include <stdio.h>//set容器查找 #include <set> using namespace std; int main() { int n,m,x,i; set<int>s; scanf("%d %d",&m,&n); for(i=0;i<m;i++) scanf("%d",&x),s.insert(x); for(i=0;i<n;i++) { scanf("%d",&x); if(s.find(x)!=s.end()) printf("YES\n"); else printf("NO\n"); } return 0; }
#include <stdio.h>//二分查找 #include <string.h> #include <algorithm> using namespace std; long a[1000005]; void search(long x,long right) { long mid,left=0,flag=0; while(left<=right) { mid=(left+right)/2; if(a[mid]<x) left=mid+1; if(a[mid]>x) right=mid-1; if(a[mid]==x) { flag=1; printf("YES\n"); break; } } if(!flag) printf("NO\n"); } int main() { long m,n,i,num; memset(a,0,sizeof(a)); scanf("%ld %ld",&m,&n); for(i=0;i<m;i++) scanf("%ld",&a[i]); sort(a,a+m); for(i=0;i<n;i++) { scanf("%ld",&num); search(num,m-1); } return 0; }
原文地址:http://blog.csdn.net/su20145104009/article/details/45223123