经典01背包
#include <bits/stdc++.h> using namespace std; const int maxn = 100;//物品最大数 const int maxv = 1000;//容器v的上限 int w[maxn],c[maxn],dp[maxn]; int main() { ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); int n,v;//n为物品数目,v为能够容纳的最大重量 cin>>n>>v; for(int i=1;i<=n;i++) cin>>w[i]; for(int i=1;i<=n;i++) cin>>c[i]; for(int i=1;i<=n;i++){ for(int j=v;j>=w[i];j--) dp[j] = max(dp[j],dp[j-w[i]]+c[i]);//转换方程 } cout<<dp[v]<<endl; return 0; }