关闭

题目1173:查找

94人阅读 评论(0) 收藏 举报
题目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;
}

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:51478次
    • 积分:1134
    • 等级:
    • 排名:千里之外
    • 原创:145篇
    • 转载:7篇
    • 译文:0篇
    • 评论:4条
    最新评论