下面只贴深搜的函数部分,其余部分已检查:
void dfs(int step, int num) {
if (num >= ans)
return;
if (step == n + 1) {
ans = num;
return;
}
sum[num + 1] = w - c[step];
dfs(step + 1, num);
for (int i = 1; i <= num; i++) {
if (sum[i] - c[step] >= 0) {
sum[i] -= c[step];
dfs(step + 1, num);
sum[i] += c[step];
}
}
}
求各位大佬们帮帮忙吧!