【经典问题】遍历得到数组的所有子序列(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))

~希望对你有帮助~

相关推荐
王维同学8 分钟前
[自学][Windows C++]RunOnceEx 注册表分组键的安全遍历
c++·windows·安全·开源
keyipatience32 分钟前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
我的xiaodoujiao37 分钟前
快速学习Python基础知识详细图文教程9--函数进阶
开发语言·python·学习·测试工具
战族狼魂1 小时前
高频面试题精选:分治与AI Agent架构
人工智能·算法·大模型·大语言模型
weixin_408099671 小时前
2026 图片去水印 API 接口完全指南:一键去除图片水印(附 Python/Java/PHP/C# 示例)
java·python·php·图片处理·api调用·图片去水印·石榴智能
李剑一1 小时前
你用过网易的将军令嘛?它底层实现账号保护的原理相当简单粗暴
算法
Scott9999HH1 小时前
告别流量波动玄学!从法拉第电磁定律到底层 C/C++ 流量累积算法,深度解密工业级电磁流量计选型与开发
c语言·c++·算法
爱喝水的鱼丶1 小时前
SAP-ABAP:ALV通用封装实践——搭建可复用的ALV开发工具类,减少80%重复代码
开发语言·性能优化·sap·abap·erp·alv
去码头整点薯条ing2 小时前
某当网登录滑块【协议+OCR】
爬虫·python·ocr
脱胎换骨-军哥2 小时前
C++/Rust无缝互操作:混合系统新常态
开发语言·c++·rust