题目1173:查找
题目1173:查找
时间限制:1 秒
内存限制:32 兆
学到的知识:使用二分查找之前数组一定是排好序的。切记
- 题目描述:
-
输入数组长度 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
//题目1173:查找 #include<iostream> #include<stdio.h> #include<stdlib.h> #include<algorithm> #include<string.h> using namespace std; int a[102]; int main() { int n; int i; int m; int start,over,mid; int flag; while(scanf("%d",&n)!=EOF) { for(i=0; i<n; i++) { scanf("%d",&a[i]); } sort(a,a+n); scanf("%d",&m); while(m--) { int x; scanf("%d",&x); start=0,over=n-1; flag=0; while(over>=start) { mid=(over+start)/2; if(a[mid]==x) { flag=1; break; } else if(a[mid]>x) { over=mid-1; } else { start=mid+1; } } if(flag==1) printf("YES\n"); else printf("NO\n"); } } return 0; }