测评机: Xeond[6]
得分: 40分
提交日期: 2012-7-29 16:05:00
有效耗时: 515毫秒
测试结果1: 通过本测试点|有效耗时171ms
测试结果2: 测试结果错误.错误结果为:12
正确结果应为:13
测试结果3: 通过本测试点|有效耗时344ms
测试结果4: 测试结果错误.错误结果为:123
正确结果应为:125
测试结果5: 测试结果错误.错误结果为:63
正确结果应为:65
//g[k,i,j] 字符串s从第i位到第j位分成k+1份的最多单词数
var
s,ss:string;
i,p,k,j,n,len:longint;
word:array[1..6] of string;
f:array[1..200,1..200] of longint;
g:array[0..20,1..200,1..200] of longint;
function sou(s:string):longint;
var i:longint;
begin
if s='' then exit(0);
for i:=1 to n do begin
if copy(s,1,length(word[i]))=word[i] then
exit(1+sou(copy(s,2,length(s)-1)));
end;
exit(sou(copy(s,2,length(s)-1)));
end;
begin
readln(p,k);
for i:=1 to p do begin
readln(ss);
s:=s+ss;
end;
p:=k;
readln(n);
len:=length(s);
for i:=1 to n do readln(word[i]);
for i:=1 to length(s) do
for j:=1 to length(s)-i+1 do
f[j,j+i-1]:=sou(copy(s,j,i));
g[0]:=f;
for k:=1 to p do
for i:=k+1 to len do
for j:=k to i-1 do
g[k,1,i]:=g[k-1,1,j] + f[j+1,i];
writeln(g[p-1,1,len]);
end.