/*dup.js(向下-向上排列:dup)http://perso.wanadoo.fr/jean-paul.davalan/mots/comb/perm/dup.jshttp://perso.wanadoo.fr/jean-paul.davalan/mots/comb/perm/ud.html版权所有(C)2003-2004 Jean-Paul Davalanhttp://perso.wanadoo.fr/jean-paul.davalan页码:http://perso.wanadoo.fr/jean-paul.davalan/index.htmldétermination de toutes les公司排列OU dérangements OU down-up OU up-downdel’ensemble[n]={1,2,…,n}des n entiers性质日期。示例:213564代表la置换1 -> 2 2->1(12)est un循环3->3(3)est非点固定4 -> 55 -> 66->4(4 5 6)测试未完成循环Une autre符号est(12)(3)(4 5 6)*///0:吹牛,1:向下-向上,2:向上-向下,3:dérangementvar permut=1;var链;//teste-si-la排列est-bien-down-up(ou-up-down)功能测试(t,k,j,a){如果(permut==0||permut=3)返回true;如果(permut==1&&((k%2==0&&t[j]a) )返回true;if(permut==2&&((k%2==0&&t[j]>a)||(k%2==1&t[j)0&&nbre>=限制){回报;}var a,r,j,i,tb=新数组();如果(k==1){对于(j=1;j<=n;j++){对于(i=1;i<=n;i++)tb[i]=i;tb[1]=j;tb[j]=1;if(permut!=3|j>1)perm(n,tb,2);}}else如果(k>1&&k<=n){a=t[k-1];对于(j=k;j<=n;j++){if(测试(t,k,j,a)==真){对于(r=1;r<=n;r++)tb[r]=t[r];如果(j>k){tb[k]=t[j];tb[j]=t[k];}if(排列!=3|tb[j]!=j)perm(n,tb,k+1);}}}其他{var s=“”+bij(t,n)+“;”;如果(s.长度>25)s+=“\n”+周期(t,n)+“\n”;其他的s+=“”+周期(t,n)+“\n”;链+=s;nbre++;}}函数bij(t,n){var s=“”,i;对于(i=1;i<=n;i++){s+=t[i];如果(i<n)s+=“”;}返回s;}函数循环(t,n){如果(document.frm.c.checked==false)返回“”;var s=“”,cy=0,l=0,der=true,i,j,k,tb=新数组();对于(i=1;i<=n;i++)tb[i]=真;对于(i=1;i<=n;i++){如果(tb[i]==真){cy++;j=1;k=i;s+=“(”+k;tb[k]=错误;while(t[k]!=i){j++;k=t[k];s+=“”+k;tb[k]=假;}如果(j>l)l=j;如果(j==1)der=假;s+=“)”;}}如果(cy>1)s=cy+“周期:”+s;else s=“1周期:”+s;如果(l<3){s+=“调用”;ninvol++;}if(der==真){s+=“dergt.”;ndergt++;}返回s;}var极限=20;//富裕界限var nbre;//排列方式var ninvol,ndergt;函数cherche(){变量n;document.frm.ar.value=“”;var uu=新数组();var ds,dt=文档.frm.n.值;做{ds=dt;dt=ds.replace(/\s+/g,“”);dt=dt.替换(/\s*[,;:]+\s*/g,“,”);dt=dt.替换(/[,]+/g,“,”);dt=dt.替换(/[,]+/g,“,”);}而(ds!=dt);document.frm.n.value=dt;uu=dt.分割(/[,]/);for(var ui=0;ui<uu.长度;ui++){//警报(uu[ui])var u=uu[ui].split(/\s+/);var t=新数组();var n0=解析Int(u[0]);var n1=n0;if(document.frm.rd[0].checked==true)permut=0;else if(document.frm.rd[2].checked==true)permut=1;else if(document.frm.rd[3].checked==true)permut=2;else if(document.frm.rd[1].checked==true)permut=3;var lm,ll=文档.frm.l.value;做{lm=ll;ll=lm.replace(/\s+/g,“”);}而(ll!=lm);如果(ll==void(0)||ll==“”|ll==“infty”)限制=0;else limite=解析Int(ll);如果(u.length==2)n1=解析Int(u[1]);//document.frm.ar.value=“”;如果(ui==0){if(permut==0)document.frm.ar.value=“Permutations quelconques\n”;else if(permut==3)document.frm.ar.value=“Dérangements\n”;否则if(permut==1)document.frm.ar.value=“向下向上排列(交替)\n”;else if(permut==2)document.frm.ar.value=“排列up-down\n”;}对于(n=n0;n<=n1;n++){如果(n==0){document.frm.ar.value+=“#n=0 nbre:1\n”;document.frm.ar.value+=“集合的唯一排列提供了一个”;}其他{nbre=0;ninvol=0;ndergt=0;chaine=“”;perm(n,t,1);if(limite>0&&nbre==limite)document.frm.ar.value+=“#n=”+n+“\n”;其他{document.frm.ar.value+=“#n=”+n+“nbre perm.:”+nbre+“invol.:”+ninvol+“dergt.:”+ndergt+“\n”;}document.frm.ar.value+=链;if(limite>0&&nbre==limite)document.frm.ar.value+=“#limite”+limite+“\n”;}}}}功能演示(n、type、c、lim){如果(c==“循环”)document.frm.c.checked=true;else document.frm.c.checked=false;document.frm.n.value=n;if(type==“perm”)document.frm.rd[0].checked=true;else if(type==“der”)document.frm.rd[1].checked=true;else if(type==“up”)document.frm.rd[2].checked=true;else if(type==“down”)document.frm.rd[3].checked=true;document.frm.l.value=lim;document.frm.ar.value=“”;//暂时化!!!!(mozilla 1.5工作区)//Mozilla/5.0(X11;U;Linux i686;en-US;rv:1.5)Gecko/20031007对于(i=1;i<10000;i++)u=0;//inutile sous konqueror公司cherche();}