求助!样例通过,测试全WA

B3624 猫粮规划

__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了,对于所有猫粮都遍历一遍选与不选,到n才算终止,一般都是在终止处去更新答案


by __Immorta__ @ 2024-04-21 10:42:18

@Agil12_ 非常感谢


|