三种解法
第一种:
#include <stdio.h>
int main()
{
int n,m,a[100];
while(~scanf("%d",&n))
{
for(int i = 0;i < n;i ++)
{
scanf("%d",&a[i]);
}
scanf("%d",&m);
for(int i =0;i < m;i ++)
{
int x,j;
scanf("%d",&x);
for(j =0;j < n;j ++)
{
if(a[j] == x)
break;
}
if(j != n)
printf("YES\n");
else
printf("NO\n");
}
}
return 0;
}
第二种(二分法):
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a,const void *b)
{
return *(int*)a - *(int*)b;
}
int main()
{
int n,m,a[100];
while(~scanf("%d",&n))
{
for(int i = 0;i < n;i ++)
{
scanf("%d",&a[i]);
}
scanf("%d",&m);
qsort(a,n,sizeof(a[0]),cmp);
while(m --)
{
int x;
bool flag = false;
scanf("%d",&x);
int top = n - 1,base = 0;
while(top >= base)
{
int mid = (top + base) / 2;
if(a[mid] == x)
{
flag =true; break;
}
else if(a[mid] < x)
{
base = mid + 1;
}
else
top = mid - 1;
}
if(flag)
printf("YES\n");
else
printf("NO\n");
}
}
return 0;
}
第三种:
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
int n,m,a[100];
while(~scanf("%d",&n))
{
for(int i = 0;i < n;i ++)
{
scanf("%d",&a[i]);
}
scanf("%d",&m);
sort(a,a + n);
while(m --)
{
int x;
bool flag = false;
scanf("%d",&x);
int top = n - 1,base = 0;
while(top >= base)
{
int mid = (top + base) / 2;
if(a[mid] == x)
{
flag =true; break;
}
else if(a[mid] < x)
{
base = mid + 1;
}
else
top = mid - 1;
}
if(flag)
printf("YES\n");
else
printf("NO\n");
}
}
return 0;
}