百度笔试题:绳子最多覆盖多少个点
版权所有。所有权利保留。
欢迎转载,转载时请注明出处:
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;
}
浙公网安备 33010602011771号