描述
一个旅行者有一个最多能装 M 公斤的背包,现在有 n 件物品,它们的重量分别是 W1,W2,...,Wn,它们的价值分别为 C1,C2,...,Cn,求旅行者能获得最大总价值。
输入描述
第 1 行:两个整数,M (背包容量,M≤200 )和 N ( 物品数量,N≤30 )。
第 2…N+1 行:每行二个整数 Wi,Ci,表示每个物品的重量和价值。
输出描述
仅一行,一个数,表示最大总价值。
#include<bits/stdc++.h>
using namespace std;
int w[1001];
int v[1001];
int dp[1001][1001];
int n,m;
int main(){
cin>>m>>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<=m;j++){
if(j<w[i]){
dp[i][j]=dp[i-1][j];
}else{
dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);
}
}
}
cout<<dp[n][m]<<endl;
return 0;
}