求助!大佬们
查看原帖
求助!大佬们
445864
美少女☁楼主2021/1/4 22:48

这题深搜卡最后一个点超时

```cpp #include #include

using namespace std;

int v,w; int n; int maxn = -1e7; //方便下面的比较 int weight[50]; int volume[50]; int value[50]; int flag[400];

bool judge(); void dfs(int we,int vo,int va);

int main() { cin>>v>>w; cin>>n; for(int i=1;i<=n;i++) { cin>>volume[i]; cin>>weight[i]; cin>>value[i]; } dfs(0,0,0); cout<<maxn; }

void dfs(int we,int vo,int va) { if(judge()) //如果都选过了 { return ; } for(int i=1;i<=n;i++) { if(we+weight[i]>w||vo+volume[i]>v&&flag[i]==0)//如果不能再放去了 { maxn = max(maxn,va); } else if(we+weight[i]<=w&&vo+volume[i]<=v&&flag[i]==0)//如果害可以放进去 { flag[i] = 1; dfs(we+weight[i],vo+volume[i],va+value[i]); flag[i] = 0; } } }

bool judge() { for(int i=1;i<=n;i++) { if(flag[i]==0) { return false; } } return true; }

2021/1/4 22:48
加载中...