题目:
坐标轴上从左到右依次的点为a[0]、a[1]、a[2]……a[n-1],设一根木棒的长度为L,求L最多能覆盖坐标轴的几个点?
思路:
这是一道简单的数组题,
方法也很简单&#xff1a;直接从左到右扫描&#xff0c;两个指针i和j&#xff0c;i从位置0开始&#xff0c;j从位置1开始&#xff0c;如果a[j] - a[i] <&#61; L&#xff08;采用<&#61;,是因为可能某个区间不能刚好等于L&#xff09;&#xff0c;则j&#43;&#43;&#xff0c;并记录中间经过的点个数&#xff0c;如果a[j] - a[i] > L&#xff0c;则j--回退&#xff0c;覆盖点个数-1&#xff0c;回到刚好满足条件的时候&#xff0c;将满足条件的最大值与所求最大值比较&#xff0c;然后i&#43;&#43;,j&#43;&#43;&#xff0c;直到求出最大的点个数&#xff08;结果可能有多种情况&#xff0c;只取第一次满足的情况&#xff09;。
代码&#xff1a;
#include
using namespace std;int maxCover(int a[],int n,int L){int i&#61;0,j&#61;1;int count&#61;1,maxCount&#61;1,start;while(i