组中是否存在若干元素的组合,相加为目标值

到此还未过滤不合格组合

过滤掉不符合要求的组合就是我们所需要的 题目结果


/**
 * 已知一个无序数组 array,元素均为正整数。给定一个目标值 target,
 * 输出数组中是否存在若干元素的组合,相加为目标值。
 */
let ar1r = [1, 2,3];//目标数组
/**
 * 返回符合要求的组合
 * @param {*} nums 组合位数 值 即 几个数相加
 * @param {*} forArr 目标数组
 */
function forn (nums,forArr){
    let data=[];
    let temporaryData = "let data1 = [];"//临时数组
let forN = "";
const arrName = "ar1r"
function ifItem(nums) {
    let narr = [];
    for (let j = 0; j < nums; j++) {
        narr.push(`n${j}`);
    }
    let nstr = narr.join("+");
    let a = ` if(${nstr}==3){`;
    let b = "";
    for (let data1 = 0; data1 < nums; data1++) {
        b+=`data1.push(j${data1});`;
    }
    a+=b;
    a+="data.push(data1);"
    return a;
}
for (let index = 0; index < nums; index++) {
    forN += ` for (let j${index} = 0; j${index} < forArr.length; j${index}++) {
        const n${index} = forArr[j${index}];`
    if (index == nums - 1) {
        forN += temporaryData;
        forN += ifItem(nums)
    }
}
for (let index = 0; index <= nums; index++) {
    forN += "};"
}
  eval(forN)
  return data;
}
let fornArr = []//若干组和的 数组
for (let index = 1; index <=ar1r.length; index++) {
    let s =  forn(index,ar1r)
//    fornArr=   fornArr.concat(...s)
for (let index = 0; index < s.length; index++) {
    const element = s[index];
    fornArr.push(element)
}
}
console.log('fornArr :>> ', fornArr);//打印结果 到此还未过滤不合格组合
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值