直接上代码
var test = new Array();
test[0] = new Array('a1', 'a2');
test[1] = new Array('b1', 'b2', 'b3');
test[2] = new Array('c1', 'c2');
function combin(CombinList){
var Result = new Array();
var CombineCount = 1;
for(i in CombinList){
CombineCount *= CombinList[i].length;
}
var RepeatTime = CombineCount;
for(i in CombinList){
var ClassNo = i;
var StudentList = CombinList[i];
RepeatTime = RepeatTime/StudentList.length;
var StartPosition = 1;
for(j in StudentList){
var TempStartPosition = StartPosition;
var SpaceCount = CombineCount/StudentList.length/RepeatTime;
for(var J = 1; J <= SpaceCount; J ++){
for(var I = 0; I < RepeatTime; I ++){
if(typeof(Result[TempStartPosition + I]) == 'undefined'){
Result[TempStartPosition + I] = new Array();
}
Result[TempStartPosition + I][ClassNo] = StudentList[j];
}
TempStartPosition += RepeatTime*StudentList.length;
}
StartPosition += RepeatTime;
}
}
return Result;
}
document.write('<pre>');
var r = combin(test);
for(i in r){
document.write(r[i].join('-')+' ');
document.write('\n');
}
document.write('</pre>');
/*
得出的结果是:
a1-b1-c1
a1-b1-c2
a1-b2-c1
a1-b2-c2
a1-b3-c1
a1-b3-c2
a2-b1-c1
a2-b1-c2
a2-b2-c1
a2-b2-c2
a2-b3-c1
a2-b3-c2
*/
3 Comments
谢谢~~,太棒了~
算法不错,手头正好有个项目需要排列组合算法。回家自己也写写看哈
The mortgage loans suppose to be essential for people, which would like to ground their own organization. As a fact, it is very comfortable to get a short term loan.