2012-01-09 49 views
0

我认为这是一个逻辑/数学解决方案,我很确定这里有人知道答案。 :)创建最大可能组

这是用PHP编写的。

可以说我有3个苹果,3个香蕉和3个桔子。

我需要能够与类别创建“水果篮可能”的最大量的/需求:


类别A =任何水果/ 3必需

类别B =香蕉或桔子/ 2必需

类别C =橙子/ 1必需

类别d =苹果或香蕉/ 2必需


我可以做的篮子的最大数量是多少?我需要知道如何获得解决方案,而不一定是解决方案。如果有人知道,我也想知道这是什么。

此外,这些数字可以增长到成千上万,所以我需要能够做到这一点而不破坏计算机。

+1

这是功课吗? – PeeHaa 2012-01-09 20:40:49

+0

您是否需要自己的购物篮组合是互相排斥的,或者从清单开始时每次都计算在内? – 2012-01-09 20:40:53

+0

如果你每组总有一个篮子,你需要n篮子(其中n是组数)。如果你可以有篮子的_combinations_(比如显然是B和D),你最终会得到n!篮子 - 我相信你的电脑会在两位数的时候死掉。 – 2012-01-09 20:41:18

回答

1

为了使这项工作,那么你需要设置和条件阵列,“库存”的数组和结果数组。

你的库存应该包含所有的“果实”你需要可作为值金额:

$inventory = array(
    'oranges' => 2800, 
    'apples' => 1600, 
    'bananas' => 3000, 
) 

然后,您将需要设置条件,建立每筐型。组织这些条件可能需要子阵列。这里有一个例子:

$conditions = array(
    'basketa' => array(
     'alloweditems' => array('oranges', 'apple'), 
     'requireditems' => 2 
    ), 
    'basketb' => array(
     'alloweditems' => array('bananas', 'apple'), 
     'requireditems' => 2 
    ), 
) 

最后一步将是循环的篮子检查允许的项目和加载每个可用的项目数。将它们组合得到可用的水果总数,并简单地将总数除以所需水果的数量。要获得四舍五入的数字,请使用“FLOAT($ number)”以获得最少量的篮子...

+0

我相信danielrsmith就是这个组合。如果我只是循环而过,它只会找到一种可能的组合,而且这种组合可能甚至不能满足要求。此外,X-Zero说的也似乎是正确的,因为组合的数量可能会很大,可能会导致计算机死机。 – teynon 2012-01-09 20:56:38

+0

你问了2个香蕉和苹果的物品,从来没有说过你需要有1个苹果和1个香蕉。你也没有说你希望你的篮子是互相排斥的,以这种速度让它不可能猜到...... – 2012-01-09 21:07:37

+0

这与代码或编程无关。这是一个简单的数学问题,可以表示为一个组合方程。篮子被表示为具有特定要求的组合。 – danielrsmith 2012-01-10 16:36:42