直接上代码
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.