gpt4 book ai didi

python - 仅一个循环的排序和非排序排列

转载 作者:太空宇宙 更新时间:2023-11-03 19:51:38 27 4
gpt4 key购买 nike

我想按照给定长度的字典顺序对一个循环的排列进行排序和取消排序。

一个循环的排列是您可以在此循环中访问每个元素的位置。

p:= (2,3,1) 是一个循环的排列。排名第 1。

p:= (3,1,2) 也有 1 个循环,但等级为 2,因为排列是按字典顺序排列的,第一个排列更大,因此它的等级更高。

p:= (1,2,3) 是 3 个周期的排列。 (1),(2),(3)

如何按字典顺序有效地排序(用一个周期进行排列)和取消排序(rank + len 到用一个周期进行排列)?我不知道如何存档。

最佳答案

我发现了一个排名解决方案。我们知道长度为 n 的排列有 n-1!一个循环的排列。根据这些知识,我们可以得出以下解决方案。

排名:示例2341

我们开始计算第 1 个位置的排名,这给出了 (n-1[位置])!作为临时值。然后我们计算 2 的索引,该索引为 0,因为 1 正在通过它创建循环 (1)。为了完成第一个位置的计算,我们需要将元素的indextempvalue相乘,得到0作为temprank_0。现在,我们对剩余位置继续执行此步骤,添加 temprank_0+temprank_1+temprank_2+temprank_4 = 0

取消排名:4 对于排列长度 4:

我们将排名除以(n-2[postion+1])!,它领先于2,它是1234的索引,不创建循环,因此排列的第 1 个位置是 4 。然后我们从 4 中减去 2 次 (n-2)!。我们继续这样两次。所以我们有 412。所以最后我们只添加剩余的值 3 最后我们得到排列 4123

关于python - 仅一个循环的排序和非排序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59800684/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com