/***
alist :原来的要排练的数组,n组合的个数
*/
function getCom(aList, n) {
var a = []; //新的组合数组
var count = 0;
var m = aList.length;
var flags = [];
/*初始化*/
for (var i = 0; i < n; i++) {
flags[i] = 1;
}
for (var i = n; i < m; i++) {
flags[i] = 0;
}
/*第一个组合数*/
var tempA = [];
for (var i = 0; i < flags.length; i++) {
if (flags[i] == 1) {
tempA.push(aList[i]);
}
}
a.push(tempA.toString());
count = 1;
var has10 = false; //是否有”10″组合的标志:true-有;false-无
var bound = 0; //第一个”10″组合的索引
var num1 = 0; //”10″组合左边的”1″的个数
var j;
while (true) {
num1 = 0;
has10 = false;
for (var i = 0; i < m – 1; i++) {
if (flags[i] == 1 && flags[i + 1] == 0)//找到第一个”10″组合
{
bound = i;
flags[i] = 0; //将该”10″组合变为”01″组合
flags[i + 1] = 1;
for (j = 0; j < num1; j++)//将其左边的所有”1″全部移动到数组的最左端
{
flags[j] = 1;
}
for (j = num1; j < bound; j++) {
flags[j] = 0;
}
has10 = true;
break;
}
else if (flags[i] == 1) {
num1++;
}
}
if (has10 == false)//没有”10″组合了,代表组合计算完毕
{
break;
}
else {
count++;
}
/*第count个组合数*/
tempA = [];
for (var i = 0; i < flags.length; i++) {
if (flags[i] == 1) {
tempA.push(aList[i]);
}
}
a.push(tempA.toString());
}
return a;
}
今天的文章js 组合_js组合模式分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/48938.html