解析:枚举每个宝箱作为最低价值宝箱,所能拿到的宝箱价值总和,时间复杂度O(N^2),详见代码:
#include<bits/stdc++.h>
using namespace std;
int a[1005];
int n,k;
int ans=0;
int main() {
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){//枚举每个宝箱作为最低价值宝箱的情况
int sum=0;
for(int j=1;j<=n;j++){//枚举所有宝箱
if (a[j]>=a[i]&&a[j]-a[i]<=k){//判断符合条件的
sum+=a[j];
}
}
ans=max(ans,sum);//取最大值
}
cout<<ans<<endl;
return 0;
}
排序后,使用双指针,时间复杂度O(NlogN),详见代码:
#include<bits/stdc++.h>
using namespace st