您的位置:首页 > 其它

noj 1001解题报告

2016-10-03 11:58 411 查看

Problem A

二分查找

时限:1000ms 内存限制:10000K 总时限:3000ms

描述:
给定一个单调递增的整数序列,问某个整数是否在序列中。
输入:
第一行为一个整数n,表示序列中整数的个数;第二行为n(n不超过10000)个整数;第三行为一个整数m(m不超过50000),表示查询的个数;接下来m行每行一个整数k。
输出:
每个查询的输出占一行,如果k在序列中,输出Yes,否则输出No。
输入样例:
5
1 3 4 7 11
3
3
6
9

输出样例:
Yes
No
No

答案:
#include <stdio.h>

#include <stdlib.h>

void binsearch (int a[],int num,int len);

int main(){

    int n;

    int a[10002];

int i,j,k,l;

int m;

int sum;

    scanf("%d",&n);

    for(i=0;i<n;i++)

    scanf("%d",&a[i]);

    scanf("%d",&m);

    for(i=0;i<m;i++){

        scanf("%d",&k);

binsearch (a,k,n);

    }

return 0;

}

void binsearch (int a[],int num,int len){

    int low,high,i;

    int mid,flag=0;;

    //len=strlen(a);

    low=0;

    high=len-1;

    while(low<=high){

        mid=(low+high)/2;

        if(a[mid]>num){

            high=mid-1;

        }else if(a[mid]<num){

            low=mid+1;

        }else {

        flag=1;

        break;

        }

    }

    if(flag) printf("Yes\n");

    else printf("No\n");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: