hdoj 3763 CD(二分查找)

来源:互联网 发布:mariaarredondo 知乎 编辑:程序博客网 时间:2024/06/05 02:01

CD(链接)

Sample Input
3 31231240 0
 

Sample Output
2

二分查找 0.0.....
int seach(int k){    int left=0,right=n2-1;    int j;    while(left<=right)    {        j=(left+right)/2;        if(a[j]==k)            return 1;        else if(a[j]>k)            right=j-1;  //选择k的前一位        else            left=j+1;   //选择k的后一位    }    return 0;}
AC代码:
#include<cstdio>#include<cstring>using namespace std;const int maxn = 1e6+10;int a[maxn],b;int n1,n2;int seach(int k){    int left=0,right=n2-1;    int j;    while(left<=right)    {        j=(left+right)/2;        if(a[j]==k)            return 1;        else if(a[j]>k)            right=j-1;        else            left=j+1;    }    return 0;}int main(){    while(~scanf("%d%d",&n1,&n2))    {        if(n1==0&&n2==0)            break;        int ans=0;        for(int i=0;i<n1;i++)            scanf("%d",&a[i]);        for(int i=0;i<n2;i++)        {            scanf("%d",&b);            if(seach(b))                ans++;        }        printf("%d\n",ans);    }    return 0;}



原创粉丝点击