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

~希望对你有帮助~

相关推荐
啊森要自信9 分钟前
【GUI自动化测试】Python 自动化测试框架 pytest 全面指南:基础语法、核心特性(参数化 / Fixture)及项目实操
开发语言·python·ui·单元测试·pytest
FL162386312913 分钟前
C++基于opencv实现的暗通道的先验图像去雾
c++·opencv·计算机视觉
赵谨言20 分钟前
基于python智能家居环境质量分析系统的设计与实现
开发语言·经验分享·python·智能家居
元亓亓亓33 分钟前
考研408--组成原理--day1
开发语言·javascript·考研·计组
仰泳的熊猫38 分钟前
LeetCode:538. 把二叉搜索树转换为累加树/1038. 从二叉搜索树到更大和树
数据结构·c++·算法·leetcode
Yurko1340 分钟前
【C语言】环境安装(图文)与介绍
c语言·开发语言·学习
仲星(._.)41 分钟前
C语言:字符函数和字符串函数
c语言·开发语言
kyle~42 分钟前
C++---向上取整
开发语言·c++
QX_hao1 小时前
【Go】--扩容机制
开发语言·golang
weixin_307779131 小时前
Clickhouse导出库的表、视图、用户和角色定义的SQL语句
开发语言·数据库·算法·clickhouse·自动化