我正在尝试制作一个程序来计算一系列数字的排列数,这样排列中的数字就会从增加到减少。 例如,给定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.
答案 0 :(得分:0)
您始终可以使用内置的itertools
from itertools import permutations
print(list(permutations([1,2,3,4])))
将在元组列表中打印1,2,3和4的所有排列。
找到有关itertools.permutations的更多信息