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

~希望对你有帮助~

相关推荐
ZenosDoron1 分钟前
keil软件修改字体,Asm editor,和C/C++ editor的区别
c语言·开发语言·c++
qq_6543669817 分钟前
如何排查Oracle客户端连接慢_DNS解析超时与sqlnet配置优化
jvm·数据库·python
山栀shanzhi22 分钟前
C/C++之:构造函数为什么不能设置为虚函数?
开发语言·c++·面试
lsx20240624 分钟前
.toggleClass() 方法详解
开发语言
谭欣辰29 分钟前
C++ 版Dijkstra 算法详解
c++·算法·图论
yuan1999730 分钟前
C&CG(列与约束生成)算法,来解决“风光随机性”下的微网鲁棒配置问题
c语言·开发语言·算法
李白的天不白39 分钟前
读到数据为undefind是的几种情况
开发语言·javascript·ecmascript
迷途酱43 分钟前
手写一个 AI Agent:从 Function Calling 到自动化任务链
python
Gerardisite44 分钟前
企微机器人开发指南
java·python·机器人·自动化·企业微信
数智化精益手记局1 小时前
人员排班管理软件的自动化功能解析:解决传统手工人员进行排班管理耗时长的难题
运维·数据结构·人工智能·信息可视化·自动化·制造·精益工程