原题链接:http://101.200.52.143/problem.php?pid=1389
算法标签:动态规划、01背包
代码:
#include<iostream>
#include<algorithm>
using namespace std;
int dp[20009]; //dp[i][j]表示处理前i件物品,背包容积为j,消耗的最大空间值
int main(){
int m,n;
int v[39];
cin >> m >> n;
for( int i=1; i<=n; i++ ){
cin >> v[i];
}
for( int i=1; i<=n; i++ ){
for( int j=m; j>=v[i]; j-- ){
dp[j] = max(dp[j], dp[j-v[i]] + v[i]);
}
}
cout <<m-dp[m];
return 0;
}