У меня недавно был вопрос с интервью следующим образом: Нам дается список слов, и мы хотим отформатировать их, чтобы максимизировать # возврата каретки, сохраняя # букв на линию в пределах диапазона.Максимизация алгоритма возврата каретки (жадный?)
Например, мы хотим, чтобы диапазон 5 - 10 (включительно) букв в каждой строке одно решение заключается в следующем:
hello (5) cat (3)
Другой заключается в следующем:
hello cat (9) <- 1 for a space
Таким образом, первое решение лучше, потому что у нас есть 1 возврат каретки против 0 во втором.
Если слово не подходит, оно должно быть размещено на новой строке. Например:
hello (5) people (6)
Наглядно мне это кажется жадной проблемой алгоритма, где мы вернемся, как только мы встретим минимальное письмо за линии ограничения. Однако это кажется слишком простым, и теперь я начинаю сомневаться в себе, но я не могу придумать встречный пример, где жадный не самый лучший.
Почему у вас есть минимальный диапазон (5 в 5-10), если вы позволите «коту» (три буквы) быть в своей собственной линии? – justhalf
Я не считал это ... Я предположил, что последнее слово не под этими ограничениями. Но если это так, то жадные, вероятно, не сработают ... – DillPixel
Я предполагаю, что в диапазоне не должно быть минимума. В противном случае этот случай неразрешимый: «bullfrog ест буйвол». «Ест» не сможет спариваться с любым словом, не нарушая максимум 10 символов. Если вход ограничен, чтобы всегда иметь решение, учитывая условие диапазона. – justhalf