Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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 发现资源分配冲突的最快方法_Javascript_Algorithm - Fatal编程技术网

Javascript 发现资源分配冲突的最快方法

Javascript 发现资源分配冲突的最快方法,javascript,algorithm,Javascript,Algorithm,我们有一个包含n子数组的订单选项数组。我们想知道是否可以获得订单履行阵列,其中: 每个订单项都有一个(任意)选项 订单履行数组由唯一值组成 将问题可视化的一些示例: [ [3, 5], [3, 5] ] result: true possible order_fulfillment = [3,5] ---------------------------------- [ [3, 5], [3, 5], [3, 5] ] result: false --------------

我们有一个包含
n
子数组的订单选项数组。我们想知道是否可以获得订单履行阵列,其中:

  • 每个订单项都有一个(任意)选项
  • 订单履行数组由唯一值组成
  • 将问题可视化的一些示例:

    [
      [3, 5],
      [3, 5]
    ]
    result: true
    possible order_fulfillment = [3,5]
    ----------------------------------
    [
      [3, 5],
      [3, 5],
      [3, 5]
    ]
    result: false
    ----------------------------------
    [
      [3, 5],
      [3, 5],
      [3, 5, 6]
    ]
    result: true
    possible order_fulfillment = [3,5,6]
    
    我目前正在使用蛮力方法,检查所有可能的组合,直到我找到一个完整的订单履行,在这一点上我返回真,或直到我检查了所有可能的组合没有成功,然后返回假

    我很想知道是否存在更好的方法。
    这将在浏览器中执行,因此是javascript标记。

    所以只需迭代每个子数组,迭代子数组,只添加唯一的

    var OrderOptions = [[3,5],[3,5],[3,5,6]];
    var PossibleFullFillment = {};
    for( var a = 0; a < OrderOptions.length; a++ )
    {
     var OrderItems = OrderOptions[a];
     for( var b = 0; b < OrderItems.length; b++ )
     {
      var current = "" + OrderItems[b].toString();
      PossibleFullFillment[current] = current;
     }
    }
    var FullFillment = [];
    for( var possible in PossibleFullFillment )
    {
     FullFillment.push(parseInt(possible));
    }
    FullFillment.sort();
    console.log(FullFillment);
    
    var OrderOptions=[[3,5]、[3,5]、[3,5,6];
    var-possiblefulfilliment={};
    对于(var a=0;a

    这里是一个演示:

    所以只需迭代每个子数组,迭代子数组,只添加唯一的

    var OrderOptions = [[3,5],[3,5],[3,5,6]];
    var PossibleFullFillment = {};
    for( var a = 0; a < OrderOptions.length; a++ )
    {
     var OrderItems = OrderOptions[a];
     for( var b = 0; b < OrderItems.length; b++ )
     {
      var current = "" + OrderItems[b].toString();
      PossibleFullFillment[current] = current;
     }
    }
    var FullFillment = [];
    for( var possible in PossibleFullFillment )
    {
     FullFillment.push(parseInt(possible));
    }
    FullFillment.sort();
    console.log(FullFillment);
    
    var OrderOptions=[[3,5]、[3,5]、[3,5,6];
    var-possiblefulfilliment={};
    对于(var a=0;a

    这是一个演示:

    谢谢。对于
    [[3,5],[3,5],[3,5]]
    ,返回
    [3,5]
    。在这种情况下,
    OrderItems
    .length
    可以与结果的
    .length
    进行比较,但是我需要做更多的测试,以确保这可以处理输入中所有可能的变化。逻辑不正确。测试编号4应该返回false,但返回true:@majidfouladour-在什么意义上<代码>完全填充
    具有
    [3,5,12,32]
    。您的逻辑规定返回值是
    fullfillement
    长度与大于或等于项目数的比较。在本例中,这两个都是4,因此它返回true。对于
    [[3,5],[3,5],[3],[12,32]
    我们应该将
    3
    分配给第三个订单项,然后第一个和第二个订单项只剩下
    5
    。因此条件#1和#2不能同时满足:1。每个订单项都有一个(任意)选项2。订单履行数组由唯一值组成。谢谢。对于
    [[3,5],[3,5],[3,5]]
    ,返回
    [3,5]
    。在这种情况下,
    OrderItems
    .length
    可以与结果的
    .length
    进行比较,但是我需要做更多的测试,以确保这可以处理输入中所有可能的变化。逻辑不正确。测试编号4应该返回false,但返回true:@majidfouladour-在什么意义上<代码>完全填充
    具有
    [3,5,12,32]
    。您的逻辑规定返回值是
    fullfillement
    长度与大于或等于项目数的比较。在本例中,这两个都是4,因此它返回true。对于
    [[3,5],[3,5],[3],[12,32]
    我们应该将
    3
    分配给第三个订单项,然后第一个和第二个订单项只剩下
    5
    。因此条件#1和#2不能同时满足:1。每个订单项都有一个(任意)选项2。订单履行数组由唯一值组成。