Panyp 2013-07-20 03:46:00
点我顶贴
收藏
删除
Program ex_608;
Var s:array[1..40]of string;
did:array[1..20]of 0..2;//单词使用次数
c:char;
ans,len:longint;
i,n:integer;
Procedure dfs(x:integer);
var i,j,k:integer;s1:string;lenn:longint;
begin
inc(did[x]);//次数+1
k:=did[x];//备份
lenn:=len;//备份
if len>ans then ans:=len;
for i:=1to n do
if did[i]<2 then
for j:=2to length(s[x]) do
begin
s1:=copy(s[x],j,length(s[x])-j+1);//s1为前一个单词的后段
if pos(s1,s[i])=1 then
begin
len:=len+length(s[i])-length(s1);
dfs(i);
len:=lenn;//复原
did[x]:=k;//复原
end;
end;
end;
Begin
readln(n);
for i:=1to n do readln(s[i]);
readln(c);
ans:=0;
fillchar(did,sizeof(did),0);
for i:=1to n do
if s[i,1]=c then
begin
len:=length(s[i]);
dfs(i);
end;
writeln(ans);
end.
求大牛讲解一下啊,6个点只过了4个