讨论 / why?
pkq 2011-07-08 18:41:00
点我顶贴 收藏 删除
var

a,b:string;

c:array[0..6]of string;

p,k,s,q,w,e,n:longint;

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

l:array[0..200]of longint;

begin

readln(p,k);

for q:=1 to p do begin readln(b);a:=a+b;end;

readln(s);

for q:=1 to s do readln(c[q]);

for q:=1 to s-1 do

for w:=1 to s-q do

if length(c[w])>length(c[w+1]) then

begin

c[0]:=c[w];

c[w]:=c[w+1];

c[w+1]:=c[0];

end;

n:=20*p;

for q:=1 to n do

begin

l[q]:=n+1;

for w:=1 to s do

if copy(a,q,length(c[w]))=c[w] then

begin

l[q]:=length(c[w])+q-1;break;

end;

end;

for q:=1 to n do

for w:=1 to n do

for e:=q to w do

if l[e]<=w then inc(g[q,w]);

for q:=1 to n do f[q,1]:=g[1,q];

for w:=2 to k do

for q:=w to n-k+w do

begin

f[q,w]:=-maxlongint;

for e:=w-1to q-1 do

if f[e,w-1]+g[e+1,q]>f[q,w]then f[q,w]:=f[e,w-1]+g[e+1,q];

end;

writeln(f[n,k]);

end.

wa20

#1 pkq@2011-07-08 18:41:00
回复 删除
302

查看更多回复
提交回复