Итак, я пытаюсь добиться равномерного разделения элементов по группам с максимальным значением для каждой группы. Пока у меня есть эта функция, по сути, количество массивов — это количество ГРУПП, необходимых для разделения ЭЛЕМЕНТОВ, а ключи массива — это максимум значение для каждой группы:
public static function splitItems($groups, $items){
$n = count($groups);
$res = array_fill(0, $n, 0);
while($items >= $groups[0]){
for($i=$n-1;$i>=0;$i--){
if($items >= $groups[$i])
{
$res[$i]++;
$items -= $groups[$i];
}
}
}
if($items > 0){
$res[0]++;
}
return $res;
}
Когда я запускаю такую функцию, как SplitItems([1,1],10); результат правильный:
Array
(
[0] => 5
[1] => 5
)
Теперь единственное, чего не хватает, — это принять во внимание КЛЮЧ массива как максимальное значение. Я ищу следующие результаты:
Ввод:
splitItems([14,2],10);
splitItems([6,8,2],14);
Выход:
Array
(
[0] => 8
[1] => 2
)
Array
(
[0] => 6
[1] => 6
[2] => 2
)
Подробнее здесь: https://stackoverflow.com/questions/792 ... t-of-items
Php равномерно распределяет количество элементов по группам, учитывая максимальное количество элементов в группе ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение