这道题我用贪心做法。
策略:依次遍历每一盏灯(除了最前面和最后面),如果能关掉就关掉。
注意:需要先排序。
程序如下:
#include <bits/stdc++.h>
using namespace std;
bool flag[100001];
int a[100001];
int main()
{
int n,dist,i,j,ans;
cin>>n>>dist;
for (i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+n+1);
ans=0;
for (i=2;i<=n-1;i++)
{
for (j=i-1;flag[j];j--);
if (a[i+1]-a[j]<=dist) {ans++; flag[i]=1;}
}
cout<<ans<<endl;
cout<<endl;
return 0;
}