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

c++将数字1--n按字典序排序后输出前k个数

作者:野牛程序员:2023-12-22 08:59:10 C++阅读 2390

使用C++编写一个程序,将数字1到n按字典序排序,并输出前k个数的代码如下:

#include <iostream>
#include <vector>

void dfs(int cur, int n, int &k, std::vector<int> &result) {
    if (cur > n || k == 0) {
        return;
    }

    result.push_back(cur);
    k--;

    for (int i = 0; i <= 9; ++i) {
        if (cur * 10 + i <= n && k > 0) {
            dfs(cur * 10 + i, n, k, result);
        }
    }
}

std::vector<int> lexicalOrder(int n, int k) {
    std::vector<int> result;
    
    for (int i = 1; i <= 9; ++i) {
        dfs(i, n, k, result);
    }

    return result;
}

int main() {
    int n = 20; // 你的数字范围,可以根据需要修改
    int k = 5;  // 要输出的前k个数字,可以根据需要修改

    std::vector<int> result = lexicalOrder(n, k);

    // 输出结果
    for (int num : result) {
        std::cout << num << " ";
    }

    return 0;
}

这个程序定义了一个递归函数dfs,用于深度优先搜索生成字典序排序的数字序列。主函数lexicalOrder则调用了dfs函数,从1到9开始遍历,生成排序好的数字序列。

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

最新推荐

热门点击