noip2001統計單詞個數

2021-06-23 01:23:17 字數 1345 閱讀 6525

本題字串處理需要注意;

單詞個數的計算:先算s[i]表示以i開頭的單詞,若有則s[i]=1,否則為0.(這要充分注意題目的要求)

考試時很難想到。

另外在算[i,j]中單詞的個數時,如果以i為開頭,需要判斷這個單詞結尾有沒有超過j,沒有才可計入。

同樣需要注意有些狀態是達不到的,這時若不賦初值在動規時判斷,狀態會出錯!

program word;

var l,n,p,k,i1,i,j,s1,flag,k1:longint;

a,aa:string;

word:array[1..6]of string;

s,t:array[1..200]of longint;

su:array[1..200,1..200]of longint;

f:array[0..200,0..40]of longint;

begin

readln(p,k1);

for i:=1 to p do

begin

readln(a);

aa:=aa+a;

end;

readln(s1);

for i:=1 to s1 do

readln(word[i]);

n:=p*20;

for i:=1 to n do

for j:=1 to s1 do

if n-i+1>=length(word[j]) then

if word[j]=copy(aa,i,length(word[j])) then

begin

s[i]:=1;

if t[i]=0 then

t[i]:=i+length(word[j])-1

else

if t[i]>i+length(word[j])-1 then t[i]:=i+length(word[j])-1;//記錄單詞結尾

end;

for i:=1 to n do

for j:=i to n do

for k:=i to j do

if (t[k]>0)and(t[k]<=j) then inc(su[i,j],s[k]);

for i:=1 to n do

for j:=1 to k1 do

f[i,j]:=-1;

for i:=1 to n do f[i,1]:=su[1,i];

for j:=2 to k1 do

for i:=j to n do

for k:=1 to i-1 do

if f[k,j-1]<>-1 then //可能達不到的狀態

if f[i,j]

NOIP2001 統計單詞個數

題三 統計單詞個數 30分 問題描述 給出乙個長度不超過200的由小寫英文本母組成的字母串 約定 該字串以每行20個字母的方式輸入,且保證每行一定為20個 要求將此字母串分成k份 1樣例 輸入 11 3 thisisabookyouareaoh4is aoksab輸出 說明 不必輸出 7 this ...

noip2001統計單詞個數

最近,迷戀上debug 1.首先暴力一遍num i j 即從i到j串裡包含多少個子串 注意首字母的使用 2.f i j 表示前i個數劃分j次,最多單詞個數 f i j max f i j f k j 1 num k 1 i 注意j,k範圍 include define re return defin...

NOIP2001 統計單詞個數

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