Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
9459 | 王循 | 01背包问题 | C++ | 通过 | 100 | 0 MS | 260 KB | 533 | 2020-11-14 10:52:33 |
#include <bits/stdc++.h> using namespace std; int a[1000],b[1000]; bool c[1000]; int w,n; int Max=-1; void f(int s) { if(s-1==n) { int sum1=0,sum2=0; for(int i=1; i<=n; i++) { if(c[i]==true) { sum1+=a[i]; sum2+=b[i]; } if(sum1>w) { sum1-=a[i]; sum2-=b[i]; break; } } if(sum2>Max)Max=sum2; } else { c[s]=true; f(s+1); c[s]=false; f(s+1); } } int main() { cin>>w>>n; for(int i=1; i<=n; i++)cin>>a[i]>>b[i]; f(1); cout<<Max<<endl; return 0; }