版权所有。所有权利保留。
欢迎转载,转载时请注明出处:
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; }