- 题目描述:
- 输入数组长度 n 输入数组 a[1...n] 输入查找个数m 输入查找数字b[1...m] 输出 YES or NO 查找有则YES 否则NO 。
-
- 输入:
- 输入有多组数据。 每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m<=n<=100)。
- 输出:
- 如果在n个数组中输出YES否则输出NO。
- 样例输入:
- 5
- 1 5 2 4 3
- 3
- 2 5 6
-
- 样例输出:
- YES
- YES
- NO
#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn=100;
int main(){
freopen("input.txt", "r", stdin);
int n=0;
while(scanf("%d", &n) != EOF){
int m=0, ns[maxn];
for(int i=0; i < n; i++){
scanf("%d", &ns[i]);
}
sort(ns, ns+n);//排序
scanf("%d", &m);
for(int i=0; i < m; i++){
int search=0;
int top=n-1, base=0;
scanf("%d", &search);
while(top>=base){
int mid=(top+base)/2;//计算中间点下标
int tmp=ns[mid];
if(tmp == search){
printf("YES\n");
break;
}else if(tmp > search) top=mid-1;
else base=mid+1;
}
if(top < base) printf("NO\n");
}
}
return 0;
}