题目. 由正整数1-n组成目标值m的所有可能情况
例如:
输入 n = 5, m = 6
则需要求{1, 2, 3, 4, 5} 所能组合成6的所有可能组合:
1 + 2 + 3 = 6
1 + 5 = 6
2 + 4 = 6
代码:
void my_dfs(int range, int target, int idx, int sum,
vector<int> &rows, vector<vector<int>> &output)
{
if (idx > range || sum > target)
return;
if (sum == target) {
rows.push_back(idx);
output.push_back(rows);
rows.erase(rows.end() - 1);
return;
}
rows.push_back(idx);
for (int i = idx + 1; i <= range; i++)
my_dfs(range, target, i, sum + i, rows, output);
rows.erase(rows.end() - 1);
}
vector<vector<int>> compoundTarget(int range, int target) {
vector<int> rows;
vector<vector<int>> output;
for (int i = 1; i <= range; i++)
my_dfs(range, target, i, i, rows, output);
return output;
}