排序组合,AS实现穷举算法

2014-11-24 00:11:54 · 作者: · 浏览: 21

原理如图:

\

算法如下:

private function compoud(N:uint, C:uint):void

{

var pickIndex:int = 0;

var X:int=1;

var Y:int=1;

var P:int=1;

var i:int=0;

var arr:Array = new Array();

var src:Array = new Array();

for(i=0;i

{

src.push(i+1);

}

while(true)

{

if(pickIndex

{

arr.push(src[pickIndex++]);

if(arr.length==C)

{

var tmp:String = "";

for(i=0;i

{

tmp +=arr[i]+ " ";

}

trace(tmp);

if(pickIndex==N)

{

var backto:int =-1;

for(i=C-1;i>0;i--)

{

if(arr[i]-arr[i-1]>1)

{

backto = i-1;

break;

}

}

if(backto==-1)

{

break;

}

pickIndex = arr[backto];

for(i=0;i

{

arr.pop();

}

}

else

{

arr.pop();

}

}

}

else

{

break;

}

}

}

摘自 aerror的专栏