关闭

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

标签: 算法面试题笔试题百度
1152人阅读 评论(0) 收藏 举报
分类:

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

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

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


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:107191次
    • 积分:1575
    • 等级:
    • 排名:千里之外
    • 原创:48篇
    • 转载:0篇
    • 译文:0篇
    • 评论:23条
    博客专栏