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。订单履行数组由唯一值组成。