百度笔试题:绳子最多覆盖多少个点

版权所有。所有权利保留。

欢迎转载,转载时请注明出处:

http://blog.csdn.net/xiaofei_it/article/details/17123711

百度笔试题:

数轴上从左到右有n个点,a[0] ,a[1],…,a[n-1],给定一根长度为L绳子,求绳子最多覆盖其中几个点?

思路很清晰,直接上代码:

 

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
	int n,l,a[1000];
	while (cin>>n>>l)
	{
		for (int i=0;i<n;i++)
			cin>>a[i];
		sort(a,a+n);
		int start=0,end=0,max=1;
		while (true)
		{
			while (end<n&&a[end]-a[start]<=l)
				end++;
			if (end-start>max)
				max=end-start;
			if (end==n)
				break;
			end--;
			do
			{
				start++;
			}while (start<n&&a[end]-a[start]>=l);
			if (start==n)
				break;
		}
		cout<<max<<endl;
	}
	return 0;
}


原文地址:https://www.cnblogs.com/fuhaots2009/p/3459090.html