题目描述:
代码实现:
// 直接爆搜
#include <iostream>
#include <vector>
using namespace std;
int cnt = 0;
void dfs(int target, vector<int>& value, int u) {
if (!target) {
cnt++;
return;
}
for (int i = u; i < value.size(); i++) {
// 剪枝
if (value[i] > target) {
break;
}
target -= value[i];
dfs(target, value, i);
target += value[i];
}
}
int main() {
vector<int> value = {50, 100, 150};
dfs(200, value, 0);
cout << cnt << endl;
return 0;
}