var list = [1, 2, 4, 10, 11, 19, 24, 30];
function combine(arr, len) {
//存放最后的结果
var cidx = 1;
var res = [];
const result = []
arrayN(0, arr, len, cidx, res)
res.forEach(e => {
list.filter(item=>item<=16).forEach(item => result.push([...e,'-'+item].join(' ')))
})
console.log(result);
}
function arrayN(idx, arr, len, cidx, res) {
let arrlen = arr.length - 1;
let ks = arrlen + 1 - (cidx + len - 1);
for (let k = 0; k <= ks; k++) {
let a = arr.slice(cidx + k, cidx + k + len - 1)
res.push([arr[idx], ...a]);
}
if (arrlen - idx >= len - 1) arrayN(idx + 1, arr, len, cidx + 1, res);
}
combine(list, 6)
从N个数字中生成指定长度并且不重复的最多组合
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 题目:现在有多组整数数组,需要将他们合并成一个新的数组。合并规则,从每个数组里按顺序取出固定长度的内容合并到新的数...
- 好久没有写文章了,因为近期在搞一个关于文献以及期刊信息查询,下载,绘图于一体的功能软件,所以忙的有点懵B,就没有时...
- 场景:随机生成50个字符串,字符串中包含数字、字母、指定特殊字符 输出结果:"9ONNCKx81GfMZBxitw...