12个字母任选5个进行排列组合,不可重复 javascript 递归实现
2014-03-24 11:01
585 查看
// 12个字母任选5个进行排列组合,不可重复
var array = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L'];
var len = array.length;
var result = [];
// for (var i = 0; i < len; i++) {
// for (var j = i+1; j < len; j++) {
// for (var k = j+1; k < len; k++) {
// for (var m = k+1; m < len; m++) {
// for (var n = m+1; n < len; n++) {
// var tm = [array[i],array[j],array[k],array[m],array
];
// result.push(tm);
// }
// }
// }
// }
// }
// console.log(result);
var indexs = {};
function recursionSub(ind, start) {
start++;
if (start > 4) {
return;
}
if (!indexs[start]) {
indexs[start] = 0;
}
for (indexs[start] = ind; indexs[start] < len; indexs[start]++) {
recursionSub(indexs[start] + 1, start);
if (start == 4) {
var temp = [];
for (var i = 4; i >= 0; i--) {
temp.push(array[indexs[start - i]]);
}
result.push(temp);
}
}
}
recursionSub(0, -1);
console.log(result);
var array = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L'];
var len = array.length;
var result = [];
// for (var i = 0; i < len; i++) {
// for (var j = i+1; j < len; j++) {
// for (var k = j+1; k < len; k++) {
// for (var m = k+1; m < len; m++) {
// for (var n = m+1; n < len; n++) {
// var tm = [array[i],array[j],array[k],array[m],array
];
// result.push(tm);
// }
// }
// }
// }
// }
// console.log(result);
var indexs = {};
function recursionSub(ind, start) {
start++;
if (start > 4) {
return;
}
if (!indexs[start]) {
indexs[start] = 0;
}
for (indexs[start] = ind; indexs[start] < len; indexs[start]++) {
recursionSub(indexs[start] + 1, start);
if (start == 4) {
var temp = [];
for (var i = 4; i >= 0; i--) {
temp.push(array[indexs[start - i]]);
}
result.push(temp);
}
}
}
recursionSub(0, -1);
console.log(result);
相关文章推荐
- 剑指Offer28字符串的排列(递归和非递归实现)扩展有重复元素的排列,字符串的组合种类
- c++ 递归实现不同字母的全排列组合
- 排列组合算法的递归实现
- 递归方法的使用之一 -- 用递归进行排列组合
- 排列与组合的Java递归实现 (参考)
- pinyin4j把中文句子(含有多音字字母)转成拼音(二维数组递归求所有组合情况返回list)算法实现!
- 无重复全排列_非递归实现
- javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
- 经典递归算法之排列,组合,集合和换零钱, Python yield实现.
- javascript实现随机产生数字与字母的组合
- java 排列组合(递归实现)
- 字符串数组元素排列与组合的Java递归实现
- 字符串全排列与全组合的递归实现-Java版
- 递归实现字母的排列问题
- 排列与组合的Java递归实现
- JAVASCRIPT去验证不能超过12个数字或英文或数字英文组合,还要求不能超过6个汉字,还要验证汉字和字母,数字的组合
- 用递归实现排列组合(java代码)
- 递归实现排列组合问题
- 蓝桥杯考试 递归题:代表团出访:重复字母的组合
- Java 非递归实现的排列组合中的平均分组问题