時間限制 2000 ms ・ 記憶體限制 256 MB
題目描述
重新排版每個段落,保留單字原順序,讓每行(含最後一行)達到指定寬度 n。可重新分行,並在同一行相鄰單字間插入至少一個空白,但行首、行尾不可有空白。
含 k 個空白的間隔,其不美觀程度為 (k−1)²。目標是讓全段所有間隔的總不美觀程度最小。唯一例外是只有一個單字的行:單字置於行首,不補行尾空白;若單字短於指定寬度,該行成本為 500,若恰好等寬則為 0。
若多種排版的總成本相同,從文章開頭比較,找到第一個長度不同的字間空白,選擇該空白較短的方案。
輸入格式
每個段落之前有一行整數 n(1 ≤ n ≤ 80)。段落由一或多行組成,每行有一或多個單字;單字由 ASCII 33 到 126 的字元組成,以一個或多個空白分隔。每個單字不長於 n,每段單字字元總長不超過 10000。恰好一個空白行結束該段。以 n = 0 結束全部輸入。
輸出格式
逐段輸出符合上述最小成本及同分規則的排版。每段後另印一個空白行。單字內的字元不得改變。
範例測資
範例輸入 1
28 This is the example you are actually considering. 25 Writing e-mails is fun, and with this program, they even look nice. 0
範例輸出 1
This is the example you are actually considering. Writing e-mails is fun, and with this program, they even look nice.
請先登入後再提交程式碼
討論與題解
載入討論區…