例题1.4 排列问题

Posted 巅峰蜗牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了例题1.4 排列问题相关的知识,希望对你有一定的参考价值。

题目

已知集合R={r1,r2,…,rn},请设计一个算法生成集合R中n个元素的全排列。

思路

令Rj=R-{rj}

记集合X中元素的全排列记为perm(X)。那么(rj)perm(X)表示在全排列perm(X)的每一种排列前加上前缀rj所得到的全排列。所以,R的全排列可归纳为

perm(R)={

  r1      当n=1

  (r1)perm(R1)+(r2)perm(R2)+…+(rn)perm(Rn)   当n>1

}

function swap(a,i,j){
    var temp=a[i]
    a[i]=a[j]
    a[j]=temp
}
var mk=1
function perm(a,k,m,pk,pm){

    if(k==m){
        console.log(mk++,a)
    }else{
        for(var i=k;i<=m;i++){
            swap(a,k,i)
            perm(a,k+1,m,pk,pm)
            swap(a,k,i)
        }
    }
}
perm(["a","b","c","d"],0,3);有24中排列方式

  

以上是关于例题1.4 排列问题的主要内容,如果未能解决你的问题,请参考以下文章

算法入门经典-第七章 例题7-2-2 可重集的排列

离散:常用排列组合模型归纳,DFS代码实现

html 将以编程方式附加外部脚本文件的javascript代码片段,并按顺序排列。用于响应式网站,其中ma

错位排列及有关例题

python例题 1--10

关于next_permutation 例题:[P4163 [SCOI2007]排列