讨论 / 我的程序错在哪里????
majunjie_ 2010-08-13 22:20:00
点我顶贴 收藏 删除
program tongji;

var

p,k,i,j,m,n:longint;

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

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

data:array[1..200] of char;

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

nu:array[1..6] of longint;

function work(s,len:longint):string;

var

i:longint;

begin

work:='';

for i:=1 to len do

work:=work+data[s+i-1];

end;

function find(s,l:longint):longint;

var

i:longint;

now:string;

begin

find:=0;

if s<=l then

begin

for i:= 1 to n do

begin

if l+1-s>=nu[i] then

begin

now:=work(s,nu[i]);

if now=zi[i] then

begin

find:=find(s+1,l)+1;

exit;

end;

end;

end;

find:=find(s+1,l);

end;

end;

begin

readln(p,k);

for i:=1 to p do

begin

for j:=1 to 20 do

read(data[i*20+j-20]);

readln;

end;

readln(n);

for i:= 1 to n do

begin

readln(zi[i]);

nu[i]:=length(zi[i]);

end;

p:=p*20;

for i:=1 to p do

for j:=i to p do

a[i,j]:=find(i,j);

for i:= 0 to p do

for j:=1 to k do

f[i,j]:=-1;

f[0,1]:=0;

for i:=1 to p do

f[i,1]:=a[1,i];

for m:=2 to k do

for j:=1 to p do

for i:= j-1 downto 0 do

begin

if f[j,m]< f[i,m-1]+a[i+1,j] then

f[j,m]:=f[i,m-1]+a[i+1,j];

end;

writeln(f[p,k]);

end.

查看更多回复
提交回复