Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找n和数组中是否存在X数_Javascript_Algorithm - Fatal编程技术网

Javascript 查找n和数组中是否存在X数

Javascript 查找n和数组中是否存在X数,javascript,algorithm,Javascript,Algorithm,我想找到下面给定的数组中是否存在x号。为了查找内部的x数,数组的任何元素都可以生成给定的x数。这是基于元素的内部数组,并检查它是否存在。这不像是促销和组合 let arrr = [ 4, 7, 6, 2, 7, 6 ]; 示例:如果X=16,则结果应为[4,6,6]=16(真) 例如: 如果X=11,则结果应为[4,7]=11(真) 示例:如果X=18 那么结果应该是[4,6,6,2]=18(真) 它没有经过优化,但可以工作: func

我想找到下面给定的数组中是否存在x号。为了查找内部的x数,数组的任何元素都可以生成给定的x数。这是基于元素的内部数组,并检查它是否存在。这不像是促销和组合

let arrr = [
    4,
    7,
    6,
    2,
    7,
    6
];
  • 示例:如果X=16,则结果应为[4,6,6]=16(真)
  • 例如: 如果X=11,则结果应为[4,7]=11(真)
  • 示例:如果X=18 那么结果应该是[4,6,6,2]=18(真)

它没有经过优化,但可以工作:

    function Contains(array, value) {
        const str = array.reduce((p, c) => p + c.toString(), "");
        const fn = function (active, rest, a) {
            const sum = rest.split("").reduce((p, c) => p + Number(c), 0);
            if (sum === value) return true;
            if (!active && !rest) return;
            if (!rest) {
                a.push(active);
            } else {
                if (fn(active + rest[0], rest.slice(1), a) === true) return true;
                if (fn(active, rest.slice(1), a) === true) return true;
            }
            return a;
        }
        const result = fn("", str, []) === true;
        return result === true;
    }
    Contains(array, value)

对于
X=16
您可以得到下一个结果,这两个结果都满足条件:
[7,7,2]
[4,6,6]
,您有什么理由选择
[4,6,6]
或任何结果都可以?还有,你试过什么吗?在这种情况下,请将其添加到问题中。是->任何结果都可以。我试过,但没有为(让I=0;我想知道实现给定算法的最佳方法。你的问题是另一个问题的简单版本。只需简单的修改,你的问题就解决了。