CodeFoeces-550B
2018-03-06 本文已影响0人
ss5smi
题目
题意
给出一串数字,要求找出长度大于2,和不小于l不大于r且最大值和最小值差不小于x。问有几种不同方法。
参考了其他作者的思路和代码。
代码
#include<bits/stdc++.h>
using namespace std;
int n,l,r,x,s[16],ans=0,ti;
int dfs(int i,int sum){
sum+=s[i];
if(sum>r) return 0;
if(sum>=l && sum<=r && s[i]-s[ti]>=x) ans++;
for(int j=i+1;j<n;j++){
dfs(j,sum);
}
}
int main() {
cin>>n>>l>>r>>x;
for(int i=0; i<n; i++) {
cin>>s[i];
}
sort(s,s+n);
for(ti=0;ti<n;ti++){
if(s[ti]+s[ti+1]>r) break;
dfs(ti,0);
}
cout<<ans<<endl;
return 0;
}