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
- 上一篇:c++字符串按字典序排序
- 下一篇:C++回溯法实现字典序组合