标签:
解题思路:给出两个数列an,bn,求an和bn中相同元素的个数
因为注意到n的取值是0到1000000,所以可以用二分查找来做,因为题目中给出的an,bn,已经是单调递增的,所以不用排序了,对于输入的每一个b[i],查找它在an数列中是否存在。存在返回值为1,不存在返回值为0
Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 627 Accepted Submission(s): 280
#include<stdio.h> #include<string.h> int a[1000005],b[1000005]; int bsearch(int a[],int n,int t) { int x,y,m; x=1; y=n; while(x<=y) { m=(x+y)/2; if(a[m]==t) return 1; else { if(a[m]>t) y=m-1; else x=m+1; } } return 0; } int main() { int n,m,i,t,num; while(scanf("%d %d",&n,&m)!=EOF&&(n||m)) { num=0; for(i=1;i<=n;i++) scanf("%d",&a[i]); for(i=1;i<=m;i++) { scanf("%d",&b[i]); num+=bsearch(a,n,b[i]); } printf("%d\n",num); } }
标签:
原文地址:http://www.cnblogs.com/wuyuewoniu/p/4181528.html