Arrays 具有双序列排序的置换

Arrays 具有双序列排序的置换,arrays,algorithm,math,permutation,combinatorics,Arrays,Algorithm,Math,Permutation,Combinatorics,我想通过长度给出的排列子集进行排序和解列。子集定义如下: 元素1,1,2,2,3 我们的输入是位字符串0101length 4(总是排列长度-1) 0表示两个连续元素递增或相等 1表示2个连续元素在减少 对于该位字符串,存在具有以下元素排列的子集1,1,2,2,3: 1,2,1,3,20级 1,3,2,2,11级 2,2,1,3,12级 2,3,1,2,13级 我要排列和取消排列的位字符串定义的排列子集?对于给定的置换元素和位字符串,是否有一种算法方法可以在不创建每个置换和检查的情况下执行此操作

我想通过长度给出的排列子集进行排序和解列。子集定义如下:

元素
1,1,2,2,3

我们的输入是位字符串
0101
length 4(总是排列长度-1)

0表示两个连续元素递增或相等

1表示2个连续元素在减少

对于该位字符串,存在具有以下元素排列的子集
1,1,2,2,3

1,2,1,3,2
0级

1,3,2,2,1
1级

2,2,1,3,1
2级

2,3,1,2,1
3级

我要排列和取消排列的位字符串定义的排列子集?对于给定的置换元素和位字符串,是否有一种算法方法可以在不创建每个置换和检查的情况下执行此操作

这是一个无重复排列的解决方案,可能可以进行调整:


提前感谢您。

简单递归应该可以做到这一点。选择任意数字作为第一个。以下数字必须服从位字符串。@user3386109没有那么简单:没有任何初始值会导致解决方案。@Prune我知道这一点。如果没有位字符串,递归将生成所有可能的置换。在第一个递归之后,位字符串限制了每个递归级别的选择,因为位字符串只有
n-1
信息位,并且有
n
数字可供选择。我只想确保OP意识到这不是一个自动的单路径解决方案。它可能涉及死胡同和回溯。