Как эффективно найти идеальное количество столбцов для строк определенной ширины?

я имеюn струны разной длиныs1, с2…, Сn что я хочу отобразить на терминале вc колонны. Терминал имеет ширинуm персонажи. Каждый столбецi имеет определенную ширинуwi которая равна ширине самой длинной записи в этом столбце. Между каждой парой столбцов есть определенное пространствоs, Общая ширина всех столбцов, включая расстояние между ними, не может быть больше ширины терминала (w1 + ш2 +… + Wc + (с - 1) · S ≤ m). Каждый столбец должен содержать ⌈н / сRings строки, кроме случаев, когдаn не делится наcв этом случае последние несколько столбцов должны быть короче на одну запись, или только последний столбец должен быть короче в зависимости от того, расположены ли строки поперек или вниз.

Есть ли эффективный (например,O(п · ш) гдеш = Максимум(w1, ш2,…, Шn)) алгоритм определения максимального количества столбцов, в которые я могу вписатьсяc столбцы, если ...

струны расположены поперек

string1 string2  string3 string4
string5 string6  string7 string8
string9 string10

струны расположены вниз

string1 string4 string7 string10
string2 string5 string8
string3 string6 string9

?

Более поздние выводы

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

Ответы на вопрос(4)

Ваш ответ на вопрос