洛谷P1026統計單詞個數

2022-08-16 15:06:12 字數 1508 閱讀 2760

給出乙個長度不超過200的由小寫英文本母組成的字母串(約定;該字串以每行20個字母的方式輸入,且保證每行一定為20個)。要求將此字母串分成k份(1單詞在給出的乙個不超過6個單詞的字典中。

要求輸出最大的個數。

輸入格式:

每組的第一行有二個正整數(p,k)

p表示字串的行數;

k表示分為k個部分。

接下來的p行,每行均有20個字元。

再接下來有乙個正整數s,表示字典中單詞個數。(1<=s<=6)

接下來的s行,每行均有乙個單詞。

輸出格式:

乙個整數,分別對應每組測試資料的相應結果。

輸入樣例:

1 3

thisisabookyouareaoh4is

aoksab

輸出樣例:

7
this/isabookyoua/reaoh

solution:

這一題裡的輸入有點噁心,因此我們可以選擇逐行讀入,並加入乙個字元陣列裡。

這題還是一道dp

我們記f[i][j]為到第i個時已經劃分了j段的最優結果。記end[i]為以i這一位的字母為首字母的單詞結束位置(因為當選用乙個單詞之後,其第乙個字母不能再用,所以我們不用考慮首字母重複的情況)。我們讓k從i列舉到j,記po為從k到i這一段中包含的單詞數,因此f[i][j]=max(f[i][j],f[k][j-1]+po).然後就很愉快地寫完了此題……

**:

1 #include2 #include3 #include4 #include5 #include6 #include7

#define inf 0x7fffffff

8using

namespace

std;

9char ch[30],s[250

];10

char word[20][300

];11

int len[20],end[1010

];12

int dp[1010][1010

];13

intp,k,lens,n,po,now;

14bool

can;

15int max(int a,int

b)18

intmain()26}

27 scanf("

%d",&n);

28for(i=1;i<=n;++i)

32for(i=1;i<=lens;++i)40}

41if

(can)44}

45 end[i]=po;46}

47for(i=1;i<=lens;++i)54}

55}56 printf("

%d\n

",dp[lens][k]);

57return0;

58 }

view code

洛谷 P1026 統計單詞個數

題目描述 給出乙個長度不超過200的由小寫英文本母組成的字母串 約定 該字串以每行20個字母的方式輸入,且保證每行一定為20個 要求將此字母串分成k份 1 k 40 且每份中包含的單詞個數加起來總數最大 每份中包含的單詞可以部分重疊。當選用乙個單詞之後,其第乙個字母不能再用。例如字串this中可包含...

統計單詞個數 洛谷p1026

給出乙個長度不超過200的由小寫英文本母組成的字母串 約定 該字串以每行20個字母的方式輸入,且保證每行一定為20個 要求將此字母串分成k份 1單詞在給出的乙個不超過6個單詞的字典中。要求輸出最大的個數。輸入格式 每組的第一行有二個正整數 p,k p表示字串的行數 k表示分為k個部分。接下來的p行,...

洛谷P1026(統計單詞個數)

給出乙個長度不超過 200 的由小寫英文本母組成的字母串 該字串以每行 20 個字母的方式輸入,且保證每行一定為 20 個 要求將此字母串分成 k份,且每份中包含的單詞個數加起來總數最大。每份中包含的單詞可以部分重疊。當選用乙個單詞之後,其第乙個字母不能再用。例如字串 this 中可包含 this ...