我要rank and unrank
个具有特殊属性的排列。我怎样才能做到这一点?集合中排列的both
属性是:
only 1 cycle
例如:
length 6 (N := 6)
的置换具有以下置换元素:(1,2,3,4,5,6)
及其子集:
子集S1 := (5,6)
子集S2 := (3,4)
子集S3 := (1,2)
其中元素为S1 > S2 > S3
。
因此,排列具有以下子集排序:L := (S3,S2,S1,S3,S2,S1)
在1个循环约束下,仅存在1个排列,它们满足了both
个约束。
(5,4,2,6,3,1)
计数器示例:
(6,4,2,5,3,1)
匹配第二个约束,但不匹配第一个约束。
我如何排名和取消满足both
约束的排列。
当我有输入参数时:
N
作为排列长度
K
作为子集的数量
L
作为包含置换元素的子集(Si
)的列表,其中L
定义了子集(Si
)的顺序。
作为等级的输出参数,如果给出等级,是否排列等级?
我只能使用一个约束而不使用both
约束对排列进行排名和取消排名。因此,排列的长度将大于100(N > 100
)。not work
将生成一个约束的所有排列,并对照另一个约束进行检查,以获取有效排列以进行排名/不排列。