[sjtu oj] 1013 无限背包
如题所述,无限背包问题
代码如下
#include<bits/stdc++.h> using namespace std; const int MAXN=1e5+5; const int MAXM=1e4+5; int v,n,dp[MAXN]; struct Obj { int w,v; }obj[MAXM]; int main() { cin>>v>>n; for(int i=1;i<=n;i++) { cin>>obj[i].w>>obj[i].v; } for(int i=1;i<=n;i++) { int temw=obj[i].w,temv=obj[i].v; for(int j=temw;j<=v;j++) dp[j]=max(dp[j],dp[j-temw]+temv); //关键部分,这里从小到大,就不用考虑到数量问题了 } cout<<dp[v]; return 0; }