Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 小元素和大元素的排列_Javascript_Algorithm - Fatal编程技术网

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代码来显示实现示例