- 从一个数组中找出 N 个数,其和为 M 的所有可能
const search = (arr, count, sum) => {
const n = num => {
let count = 0;
while(num) {
num &= (num - 1);
count++;
}
return count;
}
let len = arr.length, bit = 1 << len, res = [];
for(let i = 1; i < bit; i++){
if(n(i) === count){
let s = 0, temp = [];
for(let j = 0; j < len; j++){
if((i & 1 << j) !== 0) {
s += arr[j];
temp.push(arr[j]);
}
}
if(s === sum) {
res.push(temp);
}
}
}
return res;
}
参考链接:
https://mp.weixin.qq.com/s?__biz=MzA5NzkwNDk3MQ==&mid=2650589268&idx=1&sn=7c526a76eb99643f5dc8507657ce2bd1&chksm=8891d870bfe651663db4b63b94da0fba913bd42423ed5042d599203bf320de798e9b849136d3&scene=38#wechat_redirect