【经典问题】遍历得到数组的所有子序列(C++/python)

为实现遍历所有子序列C++递归函数的模板:

cpp 复制代码
#include <iostream>
#include <vector>

void Subsequence(std::vector<int>& nums, std::vector<int>& subseq, int start, int k) {
    if (subseq.size() == k) {
        //此时subseq就是一个符合要求的子序列,可进行相应操作
        return;
    }

    for (int i = start; i < nums.size(); ++i) {
        subseq.push_back(nums[i]);
        Subsequence(nums, subseq, i + 1, k);//递归调用
        subseq.pop_back();
    }
}

**C++实战例题:**实现打印所有子序列

cpp 复制代码
#include <iostream>
#include <vector>

// 打印子序列
void printSubsequence(std::vector<int>& nums, std::vector<int>& subseq, int start, int k) {
    if (subseq.size() == k) {
        for (int num : subseq) {
            std::cout << num << " ";
        }
        std::cout << std::endl;
        return;
    }

    for (int i = start; i < nums.size(); ++i) {
        subseq.push_back(nums[i]);
        printSubsequence(nums, subseq, i + 1, k);
        subseq.pop_back();
    }
}

// 主函数
int main() {
    std::vector<int> nums = {1, 2, 3, 4, 5};
    int k = 3;
    std::vector<int> subseq;
    printSubsequence(nums, subseq, 0, k);
    return 0;
}

python

cpp 复制代码
import itertools

def get_subsequences(arr, k):
    return list(itertools.combinations(arr, k))

arr = [1, 2, 3, 4, 5]
k = 3
print(get_subsequences(arr, k))

~希望对你有帮助~

相关推荐
嫂子的姐夫5 小时前
013-webpack:新东方
爬虫·python·webpack·node.js·逆向
CCPC不拿奖不改名5 小时前
python基础:python语言的数据结构+面试习题
开发语言·数据结构·python·面试
Tan38515 小时前
陪读蛙 Read Frog 配置 API 教程|低成本实现高质量翻译
开发语言·机器翻译·自动翻译·api key·tensdaq·陪读蛙·read frog
eybk5 小时前
拖放pdf转化为txt文件多进程多线程合并分词版
java·python·pdf
炽烈小老头5 小时前
【每天学习一点算法 2026/01/07】Fizz Buzz
学习·算法
凑凑的小手办5 小时前
C语言基础(一)
c语言·开发语言
lly2024065 小时前
Lua 循环
开发语言
※※冰馨※※5 小时前
【QT】初始化显示时正常,操作刷新后布局显示问题。
开发语言·c++·windows·qt
APIshop5 小时前
Python 爬虫获取「item_video」——淘宝商品主图视频全流程拆解
爬虫·python·音视频
D_FW5 小时前
数据结构第四章:串
java·开发语言