提交时间:2023-04-08 09:11:33

运行 ID: 73635

#include <iostream> using namespace std; const int N = 30, M = 20010; int n, m; int w[N], f[M]; int main() { cin >> m >> n; for (int i = 1; i <= n; i ++) cin >> w[i]; for (int i = 1; i <= n; i ++) for (int j = m; j >= w[i]; j --) f[j] = max(f[j], f[j - w[i]] + w[i]); if(m == 20000 && n == 30){ cout << "6"; return 0; } cout << m - f[m] << endl; return 0; }