背包(01背包、完全背包、多重背包)代码模板 #include<iostream>#include<algorithm>using namespacestd;constintmaxn =1010;intdp[maxn];intv;voidzeroonepack(intval,intcost){for(inti=v;i>=cost;i--)if(dp[i-cost]+val>dp[i]) dp[i]=dp[i-cost]+val; }voidcompletepack(intval,intcost){for(in...
多重背包 void multiply(int cost,int weight,int amount) { if(cost*amount>=v) complete(cost,weight); else{ k=1; while(k<amount){ bag01(k*cost,k*weight); amount-=k; k+=k; } bag01(cost*amount,weight*amount); } }
背包( 01背包、完全背包、多重背包)代码模板 #include <iostream> #include <algorithm> using namespace std; const int maxn = 1010; int dp[maxn]; int v; void zeroonepack(int val,int cost) { for(int i=v;i>=cost;i--) if(dp[i-cost]+val>dp[i]) dp[i]=dp[i-cost]+val; } ...
背包(01背包、完全背包、多重背包)代码模板#include <iostream> #include <algorithm> using namespace std;const int maxn = 1010;int dp[maxn];int v;void zeroonepack(int val,int cost) { for(int i=v;i>=cost;i--)if(dp[i-cost]+val>dp[i])dp[i]=dp[i-cost]+val;} void complete...
01 背包 voidbag01(intcost,intweight){for(i=v;i>=cost;i--)if(dp[i]<dp[i-cost]+weight)dp[i]=dp[i-cost]+weight;} 1. 2. 3. 4. 5. 6. 完全背包 voidcomplete(intcost,intweight){for(i=cost;i<=v;i++)if(dp[i]<dp[i-cost]+weight)dp[i]=dp[i-cost]+weight;} ...
int dp[maxn]; int v; void zeroonepack(int val,int cost) { for(int i=v;i>=cost;i--) if(dp[i-cost]+val>dp[i]) dp[i]=dp[i-cost]+val; } void completepack(int val,int cost) { for(int i=cost;i<=v;i++) dp[i]=max(dp[i],dp[i-cost]+val); ...