1

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

  1. 每个订单项目都有一个(任何)选项,
  2. 订单履行数组由唯一值组成

一些可视化问题的示例:

[
  [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 标记。

4

1 回答 1

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/

于 2013-01-04T01:42:41.997 回答