wikioi p1040 统计单词个数

来源:互联网 发布:it猎头公司 编辑:程序博客网 时间:2024/06/16 18:36

本人最讨厌字符串,题目都没怎么看。

我估计让我写我自己也不一定都写得对

这次对不起咯,我也不会啊~pascal代码。

const  maxle=202;  maxk=40;  maxs=6;type  strr=string[maxle];var  f:array[0..maxle,0..maxk]of integer;  g:array[0..maxle,0..maxle]of integer;  d:array[1..maxle]of integer;  w:array[1..maxs]of strr;  s:strr;  i,j,n,p,k,le,ans:integer;procedure makearrd;  var    i,j:integer;  begin    fillchar(d,sizeof(d),$4f);    for i:=1 to le do      for j:=1 to p do        if (pos(w[j],copy(s,i,length(w[j])+i-1))=1)and(d[i]>length(w[j]))          then d[i]:=length(w[j]);  end;procedure makearrg;  var    i,j,t:integer;  begin    fillchar(g,sizeof(g),0);    for i:=1 to le do      for j:=1 to le do        for t:=i to j do          if t+d[t]-1<=j then inc(g[i,j]);  end;procedure main;  var    i,j,t:integer;  begin    makearrd;    makearrg;    fillchar(f,sizeof(f),0);   for j:=1 to k do      for i:=j to le do        for t:=i to le do          if f[i-1,j-1]+g[i,t]>f[t,j] then f[t,j]:=f[i-1,j-1]+g[i,t]; {  for j:=1 to k do     for i:=1 to le do       for t:=1 to i do         if f[i-t,j-1]+g[t,i]>f[i,j] then f[i,j]:=f[i-t,j-1]+g[t,i]; }  end;procedure init;  var    i:integer;    t:strr;  begin    readln(p,k);    s:='';    for i:=1 to p do      begin        readln(t);        s:=s+t;      end;    le:=20*p;    readln(p);    for i:=1 to p do readln(w[i]);  end;begin  readln(n);  for i:=1 to n do    begin      init;      main;      writeln(f[le,k]);    end;end.


 

原创粉丝点击