数轴上从左到右有n个点a[0],a[1]…,a[n-1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。要求算法复杂度为o(n)。
http://blog.youkuaiyun.com/sunnyyoona/article/details/43635773
#include <iostream>
using namespace std;
int maxCover(int* a, int n, int l)
{
int maxCover = 1;
int begin = 0;
int end = 1;
while(end < n)
{
if(a[end] - a[begin] > l)
{
maxCover = (end - begin) > maxCover?(end - begin):maxCover;
begin++;
}
else
end++;
}
return maxCover;
}
int main()
{
int a[6] = {0,1,3,6,8,10};
cout<<"最大的覆盖个数:"<<maxCover(a,6,8)<<endl;
return 0;
}