首页 > 代码库 > 例题1.4 排列问题
例题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 排列问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。