📄 p1118.bak
字号:
program p1118;
const
MAXS=6;
MAXK=40;
var
str,line:string;
word:array[1..MAXS] of string;
i,p,k,s:integer;
f:array[0..200,0..MAXK] of integer;
function min(a,b:integer):integer;
begin
if a<=b then min:=a
else min:=b;
end;
function work(str:string):integer;
var
tot,i,j,ll:integer;
st:string;
used:array[1..200] of boolean;
begin
tot:=0;
fillchar(used,sizeof(used),false);
for i:=1 to s do begin
st:=str;
ll:=0;
j:=pos(word[i],st);
while j<>0 do begin
if not used[ll+j] then inc(tot);
delete(st,1,j);
used[ll+j]:=true;
ll:=ll+j;
j:=pos(word[i],st);
end;
end;
work:=tot;
end;
procedure solve;
var
i,j,ll,u:integer;
begin
fillchar(f,sizeof(f),0);
for i:=1 to 20*p do begin
for j:=1 to min(i-1,k) do begin
for u:=j to i do begin
ll:=work(copy(str,u,i-u+1));
if f[u-1,j-1]+ll>f[i,j] then
f[i,j]:=f[u-1,j-1]+ll;
end;
end;
end;
end;
begin
readln(p,k);
str:='';
for i:=1 to p do begin
readln(line);
str:=str+line;
end;
readln(s);
for i:=1 to s do
readln(word[i]);
solve;
writeln(f[20*p,k]);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -