Javascript 小元素和大元素的排列
如果数组为:Javascript 小元素和大元素的排列,javascript,algorithm,Javascript,Algorithm,如果数组为:2,3,7,9;那么我们可以进行排列的方式是: 2 7 3 9 2 9 3 7 3 7 2 9 3 9 2 7 7 9 2 3 so total ways are 5. 这里的限制是: 选择一个图元后,下一个图元必须大于该图元 在此之后的下一个元素必须小于上一个元素,依此类推,直到最后一个元素 我有以下代码,但无法获取置换的逻辑: let数组=[2,3,7,9]; 排序((a,b)=>a-b); 设res=[]; 设n=array.length; 设i=0; 设j=n-1; 设
2,3,7,9
;那么我们可以进行排列的方式是:
2 7 3 9
2 9 3 7
3 7 2 9
3 9 2 7
7 9 2 3
so total ways are 5.
这里的限制是:
let数组=[2,3,7,9];
排序((a,b)=>a-b);
设res=[];
设n=array.length;
设i=0;
设j=n-1;
设k=0;
而(i 控制台日志(res)代码>这种排列称为
众所周知,n
元素的这种排列的数量可以用递归公式来描述:
A(n+1) = Sum(k=0..n){C(n,k)*A(k)*A(n-k)} / 2
其中A(n)
是n
项的排列数,首字母A[]=1
,C(n,k)
是
所以我们可以用计算出的条目一步一步地填充数组
函数cnk(n,k){
设res=1;
for(设i=0;i 对于(让k=0;k想要的结果是什么?@NinaScholz有很多可能的方法,所以在我的例子中5“selected”元素是什么?@MBo,数组中的元素。你想要吗?但是OP从一个任意值的数组开始,这里是C和A,我试图理解这一点。@GetSet只使用1..n作为源排序的索引array@MBo,是[0]开始是零吗?这个公式中也没有使用输入数组值?@learner You太快了;)我添加了Python代码来显示实现示例