思路

01背包

过程

alt

代码

#include <iostream>

using namespace std;

const int N = 40, M = 2e4 + 10;
int a[N], f[M];
int V, n;

int main()
{
    cin >> V >> n;
    for(int i = 1;i <= n;i ++) cin >> a[i];
    for(int i = 1;i <= n;i ++)
        for(int j = V;j >= a[i];j --) 
            f[j] = max(f[j], f[j - a[i]] + a[i]);
    cout << V - f[V] << endl;
    return 0;
}