题目:
思路:0-1背包不解释
代码:
#include<iostream>
#include<algorithm>
using namespace std;
int a[31],pd[20001][31];
int main()
{
int v,n; cin >>v>> n;
for (int i = 1; i <= n; i++)cin >> a[i];
sort(a+1, a + n+1);
for (int i = 1; i <= v; i++)
{
for (int j = 1; j <= n; j++)
{
int in, un_in;
if (a[j] > i)pd[i][j] = max(pd[i - 1][j], pd[i][j - 1]);
else pd[i][j] = max(pd[i][j - 1], a[j] + pd[i - a[j]][j - 1]);
//cout << pd[i][j] << " ";
}//cout << endl;
}
cout << v-pd[v][n];
return 0;
}