題目描述 description
寫電子郵件是有趣的,但不幸的是經常寫不好看,主要是因為所有的行不一樣長,你的上司想要發排版精美的電子郵件,你的任務是為他編寫乙個電子郵件排版程式。
完成這個任務最簡單的辦法是在太短的行中的單詞之間插入空格,但這並不是最好的方法,考慮如下例子:
this is the example you are
actually considering.
假設我們想將第二行變得和第一行一樣長,靠簡單地插入空格則我們將得到如下結果:
this is the example you are
actually considering.
this is the example you
are actually considering.
當然,這必須對難看程度進行量化。因此我們必須給出單詞之間的空格的難看程度,乙個包含n個空格符的空白段,其難看程度值為(n-1)2,程式的目的是使難看程度的總和最小化。例如,第乙個例子的難看程度是1+7*7=50,而第二個例子的難看程度僅為1+1+1+4+1+4=12。
輸出時,每一行的開頭和結尾處都必須是乙個單詞,即每行開頭和結尾處不能有空白。唯一例外的是該行僅有乙個單詞組成的情況,對於這種情況你可將單詞放在該行開頭處輸出,此時如果該單詞比該行應有的長度短則我們指定它的最壞程度為500,當然在這種情況下,該行的實際長度即為該單詞的長度。
輸入描述 input description
輸入檔案第一行是乙個整數n,表示該段要求達到的寬度,1<=n<=80。該段文章由乙個或多個單詞組成,單詞由ascii碼值為33到126(包含33和126)的字元組成,單詞與單詞之間用空格隔開(可能超過乙個)。單詞長度不會超過段落要求達到的寬度。一段文字所有單詞的總長度不會超過10000個字元,任何一行都不會超過100個字元,任何乙個單詞都在同一行內。
輸出描述 output description
對於每個段落,找出使其難看程度最小的排版形式並輸出句子:「minimal badness is b.」,b是指按可能的最好排版形式會發生的難看程度值。注意排版後文字行數任意,多餘的空格也可刪除。
樣例輸入 sample input
this is the example you are
actually considering.
樣例輸出 sample output
minimal badness is 12.
/*寫了三維的dp,不知道那些二維是怎麼做到的。
f[i][j]表示到了第i個單詞,安排到了本行的第j位的方案數,然後列舉上一位放的位置進行轉移。
*/#include
#include
#include
#define n 10010
#define m 110
using
namespace
std;
intn,m,a[n],f[n][m];
char
s[m];
intmain()
}printf(
"minimal badness is %d.
",f[n][m]);
return0;
}
Codevs 1300 檔案排版
寫電子郵件是有趣的,但不幸的是經常寫不好看,主要是因為所有的行不一樣長,你的上司想要發排版精美的電子郵件,你的任務是為他編寫乙個電子郵件排版程式。完成這個任務最簡單的辦法是在太短的行中的單詞之間插入空格,但這並不是最好的方法,考慮如下例子 this is the example you are ac...
檔案排版4 14
寫電子郵件是有趣的,但不幸的是經常寫不好看,主要是因為所有的行不一樣長,你的上司想要發排版精美的電子郵件,你的任務是為他編寫乙個電子郵件排版程式。完成這個任務最簡單的辦法是在太短的行中的單詞之間插入空格,但這並不是最好的方法,考慮如下例子 this is the example you are ac...
檔案排版1(C語言)
英文電影中參演人員名單一般以某種方式進行排版顯示。給定乙個未排版的檔案listin.txt,該檔案中每行參演人員名單由冒號 分隔成前後兩部分,但格式雜亂無章,單詞 由除空格和水平製表符之外的其它字元構成 之間可能有多個空格或水平製表符分隔。編寫程式,要求將其按如下排版規則排版輸出到另乙個檔案list...