algorithm - 打印所有排列的最快运行时间

标签 algorithm permutation

<分区>

我正在尝试编写一个函数来打印数字 1 到 n 的所有排列。我看到很多 C++ 代码来执行此操作,但我不知道哪个具有最佳时间

请仅当您拥有运行时间最快的此函数的 C++ 代码时才回答此问题。

示例测试:

input:

3

output:

123

132

213

231

312

321

请帮我生成这个函数(绝对是最快的运行时间)。

最佳答案

您的输出包含 n! 行和 n 个数字,因此您无法获得比 O(n*n!) 更好的复杂度。最明显的蛮力算法就是以这种复杂性来完成的。因此,尽管您没有包含您看到的 c++ 代码,但我敢打赌它会在 O(n*n!) 时间内运行,这是最佳的。

编辑:更正,感谢评论。

关于algorithm - 打印所有排列的最快运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22421561/

相关文章:

algorithm - 排列从 1 到 100 的列表,使得对于任何索引 i,它映射到不等于 i 的 j

python - 如何在 python 中动态获取组的组合/排列?

algorithm - 在放气算法中确定 block 大小的一些好的策略是什么?

algorithm - 在 VBA 中无故跳过循环

algorithm - 配对算法

python - 你能从给定单词的字母中组合出多少个 4 个或更多字母的常见英语单词(每个字母只能使用一次)

c - 如何确定 float 尾数的最大正基数 10 值?

algorithm - 大量重复的无偏洗牌

c++ - 图问题 : Find whether two nodes share the same branch in O(1) time and O(1) storage per node

python - 在 Python 中生成特定的位序列