前言:
21考研,不论能否进复试记录一下准备路上写下的垃圾代码。本来啃《算法笔记》,但是感觉太多了做不完,改做王道机试指南。
题目描述:
输入数组长度 n 输入数组 a[1…n] 输入查找个数m 输入查找数字b[1…m] 输出 YES or NO 查找有则YES 否则NO 。
输入描述
输入有多组数据。
每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m,n<=100)。
注意:白鼠的重量各不相同。
输出描述:
如果在n个数组中输出YES否则输出NO。
解答
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
#include<stdio.h>
using namespace std;
bool binarysearch(vector<int>vi, int tag) {
int left = 0, right = vi.size() - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (vi[mid] == tag)
return true;
else if (vi[mid] < tag)
left = mid + 1;
else
right = mid - 1;
}
return false;
}
int main()
{
int n,temp,tag,time;
bool res;
while (scanf("%d", &n) != EOF) {
vector<int> vi;
for (int i = 0; i < n; i++) {
scanf("%d", &temp);
vi.push_back(temp);
}
sort(vi.begin(), vi.end());
cin >> time;
for (int i = 0; i < time; i++) {
scanf("%d",&tag);
res = binarysearch(vi, tag);
if (res)
printf("YES\n");
else
printf("NO\n");
}
}
return 0;
}