题意:有n个男生,舞技分别为......,m个女生,舞技分别为......。
只有男生和女生舞技<=1时,才能配对。
问最多配对数为几?
只有男生和女生舞技<=1时,才能配对。
问最多配对数为几?
思路:贪心。先分别排序,设定两个指针,然后进行是否配对判断,直到其中一个指针指到最后为止。
#include <cstdio>
#include <algorithm>
#define N 105
using namespace std;
int a[N],b[N];
int n,m;
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
for(int i=0;i<m;i++)
scanf("%d",&b[i]);
sort(a,a+n);
sort(b,b+m);
int ans = 0;
int i=0,j=0;
while(i<n&&j<m)
{
if(a[i]-b[j]<=1 && a[i]-b[j]>=-1)
{
ans++;
i++;
j++;
}
else if(a[i]>b[j])
j++;
else
i++;
}
printf("%d\n",ans);
}