数据范围没那么大,可以直接二叉递归求和;
void dfs(int l, vector<int> vec) {
if (l == vec.size()) {
if (sum == subtract)flag = 1;
return;
}
sum += vec[l];
dfs(l + 1, vec);
sum -= vec[l];
sum -= vec[l];
dfs(l + 1, vec);
sum += vec[l];
}

京公网安备 11010502036488号