__Immorta__ @ 2024-04-21 00:51:27
#include <bits/stdc++.h>
using namespace std;
long long int n,l,r,sum;//定义变量
vector<long long int> w;//动态数组w
void dfs(int pos,int cal){
if(cal>r){//特判
return;//结束函数
}
if(cal>=l && cal<=r){//在lr之间,方案增加
sum++;//计数器
}
if(pos==n){//到达最高
return;//结束函数
}
dfs(pos+1,cal+w[pos]);//继续递归
dfs(pos+1,cal);//递归
}
int main() {
cin>>n>>l>>r;//n份食物,区间l——r
w.resize(n);//让数组为n个
for (int i=0;i<n;i++){//输入用——for
cin>>w[i];//每一份食物含有的能量 w[i]
}
dfs(0,0);//调用函数
cout<<sum<<endl;//最后输出
return 0;
}
by Agil12_ @ 2024-04-21 10:25:42
@Immorta
if(pos==n){//到达最高
if(cal>=l && cal<=r){//在lr之间,方案增加
sum++;//计数器
}
这里代码改成这样就可以ac了,对于所有猫粮都遍历一遍选与不选,到
by __Immorta__ @ 2024-04-21 10:42:18
@Agil12_ 非常感谢