首页 > 代码库 > 学长出的题。。

学长出的题。。

因为上不了内网,自己手打下题目吧。意思大概是这样的:输入一个N,代表N个男生,下面是N个数,代表每个男生的跳舞能力值。输入一个M代表M个女生,下面是M个数,代表每个女生的跳舞能力值。现在要开始配对(必须男女搭配),配对的原则是男女的跳舞能力值不能超过一。问最对有多少个配对。。案例忘了。我直接上代码。有解析

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <algorithm>
using namespace std;
int main()
{
	int n,m,i,j,sum,k;
	double a[105];
	double b[105];
	while(~scanf("%d",&n))   //输入N个男生
	{
		for(i=0;i<n;i++)
			scanf("%lf",&a[i]);//输入N个男生的能力值
		scanf("%d",&m);
		for(i=0;i<m;i++)
			scanf("%lf",&b[i]);//同上
		sort(a,a+n);//将能力值排序
		sort(b,b+m);//同上
		sum=0;// sum放在外面。否则会导致配对的不准、
		for(i=0;i<n;i++)
		{
			for(j=0;j<m;j++)
			{
				if(fabs(a[i]-b[j])<=1.0)//  如果配对 的话
				{
					b[j]=-232;//  让配对的这个女生的能力值赋值为负数,这样就保证她不会再被配对。(这里是解题的关键)
					sum++; 
					break;
				}
			}
		}
		printf("%d",sum); //输出
	}
	return 0;
}


 

 

学长出的题。。