百度筆試題:繩子最多覆蓋多少個點

小飛_Xiaofei發表於2013-12-04

版權所有。所有權利保留。

歡迎轉載,轉載時請註明出處:

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;
}


相關文章