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

~希望对你有帮助~

相关推荐
一种乐趣7 分钟前
PHP推荐权重算法以及分页
算法·php·推荐算法
谢景行^顾16 分钟前
深度学习--激活函数
人工智能·python·机器学习
三千院本院20 分钟前
LlaMA_Factory实战微调Qwen-LLM大模型
人工智能·python·深度学习·llama
wljt29 分钟前
Linux 常用命令速查手册(Java开发版)
java·linux·python
WPG大大通32 分钟前
AIoT | 软件:Astra MCP边缘算力构建详解
经验分享·笔记·python·硬件架构·代码
卡提西亚37 分钟前
C++笔记-21-运算符重载
c++·笔记
ccLianLian41 分钟前
计算机视觉·TagCLIP
人工智能·算法
国服第二切图仔42 分钟前
Rust开发实战之简单游戏开发(piston游戏引擎)
开发语言·rust·游戏引擎
千弥霜1 小时前
codeforces1997(div.3)E F
算法
ii_best1 小时前
安卓/IOS工具开发基础教程:按键精灵一个简单的文字识别游戏验证
android·开发语言·游戏·ios·编辑器