用c++写数字组合之八
时间: 2024-03-26 12:34:37 浏览: 64
以下是用C++实现数字组合之八的代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
void dfs(vector<int>& nums, vector<int>& cur, int sum, int index, vector<vector<int>>& result) {
if (sum == 8) {
result.push_back(cur);
return;
}
for (int i = index; i < nums.size(); i++) {
if (sum + nums[i] <= 8) {
cur.push_back(nums[i]);
dfs(nums, cur, sum + nums[i], i + 1, result);
cur.pop_back();
}
}
}
vector<vector<int>> combinationSum(vector<int>& nums) {
vector<vector<int>> result;
vector<int> cur;
dfs(nums, cur, 0, 0, result);
return result;
}
int main() {
vector<int> nums = {1, 2, 3, 4, 5};
vector<vector<int>> result = combinationSum(nums);
for (auto& v : result) {
for (auto& x : v) {
cout << x << " ";
}
cout << endl;
}
return 0;
}
```
该程序中,`dfs`函数实现了回溯算法,`combinationSum`函数是对`dfs`函数的封装,用于返回所有符合条件的数字组合。在`main`函数中,我们定义了一个包含数字1~5的vector,调用`combinationSum`函数求解所有数字之和为8的组合,并输出结果。
阅读全文