У меня есть n строк разной длины s 1, s 2,..., s n, что я хотите отображать на терминале в столбцах c. Терминал имеет ширину m символов. Каждый столбец я имеет определенную ширину w i, которая равна ширине самой длинной записи в этом столбце. Между каждой парой столбцов имеется определенное количество пробелов s. Общая ширина всех столбцов, включая пространство между ними, не может быть больше ширины терминала (w 1 + w 2 +... + w c + (c - 1) · s ≤ m). Каждая колонка должна содержать: n/c & rceil; строки, кроме случаев, когда n не равномерно делится на c, и в этом случае последние несколько столбцов должны быть короче одной записью, или только последний столбец должен быть короче в зависимости от того, расположены ли строки по или вниз.
Существует ли эффективный (например, O (n · w), где w = max (w 1, w 2,..., w n)), чтобы определить максимальное количество столбцов, которые я могу вписать в столбцы c, если...
-
строки расположены через
string1 string2 string3 string4 string5 string6 string7 string8 string9 string10
-
строки расположены вниз
string1 string4 string7 string10 string2 string5 string8 string3 string6 string9
?
Более поздние результаты
Я узнал, что это не имеет значения. Каждый экземпляр проблемы, где s > 0, может быть переведен в экземпляр, где s = 0, путем расширения каждой строки символами s, а также расширения ширины терминала символами s, чтобы компенсировать лишние символы s в конце экрана.