zoj 3019 Puzzle

/*本以为这题是动态规划,然后建了一个二维数组,可惜...........

这道题浪费了太多时间,不值啊............*/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>

int a[10000+10],b[10000+10];

int cmp(const void *a,const void *b)
{
return *(int *)a - *(int *)b;
}

int main()
{
int n,m,i,j,count;
while(scanf("%d%d",&n,&m)==2)
{
memset(a,0,sizeof(a[0]));
memset(b,0,sizeof(b[0]));
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(j=0;j<m;j++)
scanf("%d",&b[j]);
qsort(a,n,sizeof(int),cmp);
qsort(b,m,sizeof(int),cmp);
count = 0;
i = j =0;
while(i<n && j<m)
{
if(a[i] == b[j])
{
i++;
j++;
count++;
}
else if(a[i]>b[j])
j++;
else if(a[i]<b[j])
i++;
}
printf("%d\n",count);
}
system("pause");
return 0;
}

你可能感兴趣的:(ZOJ)