C++实现一个序列的子序列
时间: 2024-02-13 12:01:16 浏览: 95
在C++中实现一个序列的子序列可以通过遍历原序列的所有子序列来实现。以下是一个示例代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> getSubsequences(vector<int> nums) {
vector<vector<int>> res;
int n = nums.size();
for (int i = 0; i < (1 << n); i++) {
vector<int> tmp;
for (int j = 0; j < n; j++) {
if (i & (1 << j)) {
tmp.push_back(nums[j]);
}
}
res.push_back(tmp);
}
return res;
}
int main() {
vector<int> nums = {1, 2, 3};
vector<vector<int>> res = getSubsequences(nums);
for (auto seq : res) {
for (auto num : seq) {
cout << num << " ";
}
cout << endl;
}
return 0;
}
```
该代码中的 `getSubsequences` 函数将原序列 `nums` 的所有子序列存储在 `res` 中,并返回 `res`。该函数使用了位运算的方法来生成所有子序列,即将长度为 `n` 的序列的所有子序列表示成一个 `n` 位二进制数,其中第 `i` 位为 1 表示选取原序列的第 `i` 个元素,为 0 表示不选取。
运行该代码将输出以下结果:
```
// 空序列
1
2
1 2
3
1 3
2 3
1 2 3
```
可以看到,该代码成功地输出了原序列 `nums` 的所有子序列。
阅读全文