问题描述:
有一个背包能装的重量 maxw (正整数,0≤maxw≤200000),同时有 n 件物品(1≤n≤100),每件物品有一个重量 wi (正整数)和一个价值 pi (正整数)。要求从这 n 件物品中任取若干件装入背包内,使背包的物品价值最大。
输入:
第 1 行:背包最大载重 maxw,物品总数 n ;
第 2 行到第 n+1行:每个物品的重量和价值;
输出:
一个数字即背包内物品最大价值;
样例输入:
10 3
4 5
3 4
6 9
样例输出:
14
代码实例:
#include <bits/stdc++.h>
using namespace std;
int n,c,w[20010],v[110],dp[110][20010];
int main(){
cin>>c>>n;
for(int i=1;i<=n;i++){
cin>>w[i]>>v[i];
}
for(int i=1;i<=n;i++){
for(int j=1;j<=c;j++){
if(w[i]>j){
dp[i][j]=dp[i-1][j];
}else{
dp[i][j]=max(dp[i-1][j],v[i]+dp[i-1][j-w[i]]);
}
}
}
cout<<dp[n][c];
return 0;
}