Leonid
PHP? нет, не слышал...
Задача на комбинаторику
Задача такая. На турсайте в 2-х столбцах выводятся спецпредложения по разным странам. стран около 10, по каждой может быть от 1 до ~100 спецпредложений.
Если выводить поочередно, например в левый столбец 1, 3, 5 и т.д. страны, в левый 2, 4, 6, то может получиться так, что в одном столбце контента в 2 - 3 раза больше.
Тогда я сделал алгоритм, что сравнивается, в каком столбце контента меньше, в тот и добавляются предложения по текущей стране. Но все равно, может возникать серьезный перекос, хотя уже меньше. Например, если по 1 стране 50 спецпр., а по остальным 4 - 5, то разумнее их все в 1 столбец, а по этой одной стране в другой.
В общем задача сводится к такому:
есть массив из N элементов (5 - 12). Каждый элемент имеет какое-то значение. Нужно разделить массив на 2 группы, чтобы в обоих было примерно одинаковые суммы значений.
Например массив
[1] => 20
[2] => 10
[3] => 3
[4] = >16
[5] => 30
[6] => 40
будет разделен так:
[1] + [2] + [5] => 20 + 10 + 30 = 60
[6] + [4] + [3] => 40 + 16 + 3 = 59
а массив
[1] => 2
[2] => 3
[3] => 4
[4] = >7
[5] => 1
[6] => 40
будет разделен так:
[1] + [2] + [3] + [4] + [5] => 2 + 3 + 4 + 7 + 1 = 17
[6] => 40
Задача такая. На турсайте в 2-х столбцах выводятся спецпредложения по разным странам. стран около 10, по каждой может быть от 1 до ~100 спецпредложений.
Если выводить поочередно, например в левый столбец 1, 3, 5 и т.д. страны, в левый 2, 4, 6, то может получиться так, что в одном столбце контента в 2 - 3 раза больше.
Тогда я сделал алгоритм, что сравнивается, в каком столбце контента меньше, в тот и добавляются предложения по текущей стране. Но все равно, может возникать серьезный перекос, хотя уже меньше. Например, если по 1 стране 50 спецпр., а по остальным 4 - 5, то разумнее их все в 1 столбец, а по этой одной стране в другой.
В общем задача сводится к такому:
есть массив из N элементов (5 - 12). Каждый элемент имеет какое-то значение. Нужно разделить массив на 2 группы, чтобы в обоих было примерно одинаковые суммы значений.
Например массив
[1] => 20
[2] => 10
[3] => 3
[4] = >16
[5] => 30
[6] => 40
будет разделен так:
[1] + [2] + [5] => 20 + 10 + 30 = 60
[6] + [4] + [3] => 40 + 16 + 3 = 59
а массив
[1] => 2
[2] => 3
[3] => 4
[4] = >7
[5] => 1
[6] => 40
будет разделен так:
[1] + [2] + [3] + [4] + [5] => 2 + 3 + 4 + 7 + 1 = 17
[6] => 40