当前位置:首页 C++ > 正文

C++回溯法实现字典序组合

作者:野牛程序员:2023-12-22 09:00:17 C++阅读 2722

使用C++实现字典序组合的回溯法可以按照以下的方式进行。请注意,为了符合您的要求,我将尽量避免使用上述指代词。

#include <iostream>
#include <vector>

void backtrack(std::vector<int>& combination, int n, int k, int start) {
    if (k == 0) {
        // 处理当前组合
        for (int num : combination) {
            std::cout << num << " ";
        }
        std::cout << std::endl;
        return;
    }

    for (int i = start; i <= n; ++i) {
        combination.push_back(i);
        backtrack(combination, n, k - 1, i + 1);
        combination.pop_back();
    }
}

int main() {
    int n, k;
    std::cout << "输入n和k,以空格分隔: ";
    std::cin >> n >> k;

    std::vector<int> combination;
    std::cout << "字典序组合为:" << std::endl;
    backtrack(combination, n, k, 1);

    return 0;
}

这个程序使用回溯法生成从1到n的数字中长度为k的所有组合,并按字典序输出。回溯算法通过递归实现,其中backtrack函数用于生成组合。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击