Создание максимально возможных групп - PullRequest
0 голосов
/ 10 января 2012

Я думаю, что есть логическое / математическое решение этой проблемы, и я почти уверен, что кто-то здесь знает ответ.:)

Это написано на PHP.

Допустим, у меня есть 3 яблока, 3 банана и 3 апельсина.

Мне нужно иметь возможность создать максимумколичество «Фруктовых корзин возможно» с категориями / требованиями:


Категория A = Любые фрукты / 3 Требуется

Категория B = Бананы или апельсины / 2 Требуется

Категория C = Апельсины / 1 Требуется

Категория D = Яблоки или Бананы / 2 Требуется


Какое максимальное количество корзин я могу сделать?Мне нужно знать, как получить решение, не обязательно, что это решение.Я также хотел бы знать, как это называется, если кто-нибудь знает.

Кроме того, эти цифры могут вырасти до тысяч, поэтому мне нужно иметь возможность делать это, не разрушая компьютер.

Ответы [ 2 ]

1 голос
/ 10 января 2012

Чтобы сделать это, вам нужно настроить и массив условий, массив «инвентаря» и массив результатов.

Ваш инвентарь должен содержать все необходимые вам «фрукты» с количеством, доступным в качестве значения:

$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)», чтобы получить наименьшее количество возможных корзин ...

1 голос
/ 10 января 2012

Это так называемые "комбинации"

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

...