简单题,排个序遍历下完事了
#include<stdio.h>
#include<stdlib.h>
static int cmp(const void *p1, const void *p2)
{
int *i1 = (int *) p1;
int *i2 = (int *) p2;
return *i1 - *i2;
}
int main()
{
int n, m, a[10000], b[10000];
while (scanf("%d %d", &n, &m) != EOF)
{
int i, j, res = 0;
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
for (i = 0; i < m; i++)
scanf("%d", &b[i]);
qsort(a, n, sizeof(int), cmp);
qsort(b, m, sizeof(int), cmp);
i = j = 0;
while (i < n && j < m)
{
if (a[i] < b[j])
i++;
else if (a[i] > b[j])
j++;
else
{
i++;
j++;
res++;
}
}
printf("%d\n", res);
}
return 0;
}