Алгоритм равномерного распределения текста по N столбцам - PullRequest
0 голосов
/ 25 октября 2018

Каков алгоритм, который реализует многостолбцовый макет CSS со сбалансированным заполнением?

Математическая формулировка: учитывая список положительных чисел (это будут высоты элементов, которые нужно упорядочить), распределите их по порядкув N списков, так что разница между списком с наибольшей суммой и списком с наименьшей суммой является минимумом всех возможных соглашений.

1 Ответ

0 голосов
/ 25 октября 2018

Сначала преобразуйте список в накопительный, а затем разделите последний элемент на N, чтобы получить IdealColumnSize:

Например:

2, 3, 6, 8, 3, 4, 2

Получает совокупный список:

2, 5, 11, 19, 22, 26, 28

Допустим, мы хотим разделить его на 3. IdealColumnSize равно 9 1/3.Теперь для индексов с 1 по N-1 выберите ближайший элемент в совокупном списке.

Ближайшим к 9 1/3 является 11, поэтому первые три числа идут в столбце 1.

Ближайшим к 18 2/3 является 19, поэтому одно число входит в столбец 2.

Остальные элементы помещаются в последний столбец.

...