思路:其实还是求背包最多能装多少东西,状态转移方程dp[i] = max{dp[i], dp[i-w[j] + v[j]}, 在这一题中w和v是相同的
#include <cstdio>
#include <iostream>
using namespace std;
const int maxn = 20000+10;
int N, W, dp[maxn], temp;
int main() {
cin >> W >> N;
for(int i = 1; i <= N; i++) {
cin >> temp;
for(int j = W; j >= temp; j--) {
dp[j] = max(dp[j], dp[j-temp]+temp);
}
}
cout << W - dp[W];
return 0;
}