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

时间:2013-01-04 01:28:33

标签: javascript algorithm

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

  1. 每个订单商品都有一个(任何)选项,
  2. 订单履行数组包含唯一值
  3. 可视化问题的一些示例:

    [
      [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]
    

    我目前正在使用蛮力方法,检查所有可能的组合,直到找到完整的订单履行,此时我返回true,或直到我检查了所有可能的组合但没有成功然后返回false。

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

1 个答案:

答案 0 :(得分:1)

因此,只需迭代每个子数组,迭代子项,只添加唯一。

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);

以下是演示:http://jsfiddle.net/NtPwc/