问题 D: 查找
时间限制: 1 Sec 内存限制: 32 MB
题目描述
输入数组长度 n
输入数组 a[1...n]
输入查找个数m
输入查找数字b[1...m]
输出 YES or NO 查找有则YES 否则NO 。
输入
输入有多组数据。
每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m<=n<=100)。
输出
如果在n个数组中输出YES否则输出NO。
样例输入
6 3 2 5 4 7 8 2 3 6
样例输出
YES NO
经验总结
emmmm,这一题依旧可以直接遍历查找,或者hash查找,难度不大,就不多说啦~
AC代码
遍历
#include <cstdio>
int main()
{
int n;
while(~scanf("%d",&n))
{
int a[110]={0};
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
int m;
scanf("%d",&m);
for(int i=0;i<m;i++)
{
int temp,flag=0;
scanf("%d",&temp);
for(int j=0;j<n;j++)
{
if(a[j]==temp)
{
flag=1;
break;
}
}
if(flag==0)
printf("NO\n");
else
printf("YES\n");
}
}
return 0;
}
hash
#include <cstdio>
#include <unordered_map>
using namespace std;
int main()
{
int n,m,temp;
while(~scanf("%d",&n))
{
unordered_map<int,bool> mp;
for(int i=0;i<n;i++)
{
scanf("%d",&temp);
mp[temp]=true;
}
scanf("%d",&m);
for(int i=0;i<m;i++)
{
scanf("%d",&temp);
if(mp[temp]==false)
printf("NO\n");
else
printf("YES\n");
}
}
return 0;
}