是否可以生成一个数字列表的排列,逐个添加数字?

时间:2017-10-12 20:17:45

标签: sequence permutation

我正在尝试制作一个程序来计算一系列数字的排列数,这样排列中的数字就会从增加到减少。 例如,给定n = 4的系列1,2,...,n,我正在寻找的排列将是例如1423,如4> 1,2< 4,3> 2.

现在我已经创建了我的程序部分来检查排列是否正确,但我发现以正常方式生成所有排列(通过交换数字)需要花费太多时间。 这就是为什么我想知道是否有办法生成给定列表的所有排列,逐个添加数字。

例如,它将从1开始,然后它将向列表中添加2,以获得1-2。然后检查1-2以查看序列是否符合增加/减少的规则。因为它确实符合,然后将添加3,给出1-2-3。然后检查1-2-3,这是不符合的。所以我们回到1,现在增加3而不是2,给1-3等。

我正在使用C.

1 个答案:

答案 0 :(得分:0)

您始终可以使用内置的itertools

from itertools import permutations
print(list(permutations([1,2,3,4])))

将在元组列表中打印1,2,3和4的所有排列。

您可以在itertools documentation

找到有关itertools.permutations的更多信息