// 从m中取n的所有组合
function getFlagArrs(m, n) {
var flagArrs = [],
flagArr = [],
isEnd = false;
for(var i = 0; i < m; i++){
flagArr[i] = i < n ? 1 : 0;
}
flagArrs.push(flagArr.concat());
// 当n不等于0并且m大于n的时候进入
if(n && m > n){
while(!isEnd){
var leftCnt = 0;
for(var i = 0; i < m - 1; i++){
if (flagArr[i] == 1 && flagArr[i + 1] == 0){
for(var j = 0; j < i; j++){
flagArr[j] = j < leftCnt ? 1 : 0;
}
flagArr[i] = 0;
flagArr[i + 1] = 1;
var aTmp = flagArr.concat();
flagArrs.push(aTmp);
if(aTmp.slice(-n).join('').indexOf('0') == -1){
isEnd = true;
}
break;
}
flagArr[i] == 1 && leftCnt++;
}
}
}
return flagArrs;
}
javaScript:js排列组合算法(从m个元素中选n个)
最新推荐文章于 2024-02-27 22:41:56 发布