C++给定一个含不同整数的集合,返回其所有的子集
时间: 2024-03-20 22:42:34 浏览: 69
可以使用递归的方法来实现求解一个集合的所有子集。具体实现过程如下:
```c++
#include <iostream>
#include <vector>
using namespace std;
void subsets(vector<int>& nums, int start, vector<int>& subset, vector<vector<int>>& res) {
res.push_back(subset); // 把当前子集加入结果集
for (int i = start; i < nums.size(); i++) {
subset.push_back(nums[i]); // 加入当前元素
subsets(nums, i + 1, subset, res); // 递归求解剩余元素的子集
subset.pop_back(); // 回溯
}
}
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> res;
vector<int> subset;
subsets(nums, 0, subset, res);
return res;
}
int main() {
vector<int> nums = {1, 2, 3};
vector<vector<int>> res = subsets(nums);
for (auto s : res) {
for (auto num : s) {
cout << num << " ";
}
cout << endl;
}
return 0;
}
```
该方法的时间复杂度为 $O(2^n)$,其中 $n$ 为集合元素个数。
阅读全文