我最近有一個面試問題如下: 我們給出了一個單詞列表,我們要格式化它們以最大化回車次數,同時保持字母數在一個範圍內的每行。最大化#回車算法(貪婪?)
例如,我們希望有一個範圍的5 - 每行10(含)的字母,一種解決方案是這樣的:
hello (5) cat (3)
另一個是這樣的:
hello cat (9) <- 1 for a space
因此,第一個解決方案是更好,因爲我們有1回車比0秒。
如果一個單詞不適合,它必須放在一個新的行。例如:
hello (5) people (6)
直覺對我來說這似乎是一個貪心算法問題,我們只要我們滿足每線約束的最低信返回。然而,這似乎太簡單了,我現在開始懷疑自己了,但我不能拿出一個貪婪不是最好的反例。
如果允許「貓」(三個字母)在自己的行中,爲什麼你有最小範圍(5-10中的5)? – justhalf
我沒有考慮到......我認爲最後一句話不在這些限制之下。但如果是這樣,那麼貪婪可能無法正常工作... – DillPixel
我想在這個範圍內應該沒有最小值。否則,這種情況是不可解決的:「牛蛙吃牛蛙」。在不違反最多10個字符的情況下,「吃」不能與任何單詞配對。除非輸入受限於在給定範圍條件的情況下始終有解決方案。 – justhalf