2021-07-05 洛谷 P1049 [NOIP2001 普及组] 装箱问题 题解

原题网址

典型的01背包(递归)问题
`#include
using namespace std;
int a[1001], n, g, ma;

void dg(int dep, int sum) {
if (dep > g) {
if (sum > ma)
ma = sum;//覆盖max值
return;
}
dg(dep + 1, sum);//第一种情况:不装
if (sum + a[dep] <= n)
dg(dep + 1, sum + a[dep]);//第二种情况:装
}

int main() {
cin >> n >> g;
for (int i = 1; i <= g; i++) {
cin >> a[i];
}
dg(1, 0);
cout << n - ma;
return 0;
}`

你可能感兴趣的:(洛谷,题解,递归,c++)