创建最大可能的组

时间:2012-01-09 20:37:09

标签: php grouping distribution

我认为这个问题有一个逻辑/数学解决方案,我很确定这里有人知道答案。 :)

这是用PHP编写的。

假设我有3个苹果,3个香蕉和3个橙子。

我需要能够根据以下类别/要求创建最大数量的“可能的水果篮”:


A类=任何水果/ 3需要

B类=香蕉或橙子/ 2需要

C类=橙子/ 1必需

D类=苹果或香蕉/ 2需要


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

此外,这些数字可能会增加到数千,因此我需要能够在不破坏计算机的情况下执行此操作。

2 个答案:

答案 0 :(得分:1)

这些被称为“组合”

http://en.wikipedia.org/wiki/Combination

答案 1 :(得分: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
    ),
)

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