p1311.pas
来自「www.vijos.cn上一些习题的参考源码」· PAS 代码 · 共 71 行
PAS
71 行
program dcjl;
const
MAXN=50;
var
map:array[1..MAXN,1..MAXN] of integer;
used:array[1..MAXN] of 0..2;
word:array[1..MAXN] of string;
n,i,max:integer;
t,ch:char;
function min(a,b:integer):integer;
begin
if a<=b then min:=a
else min:=b;
end;
procedure init;
var
i,j,k:integer;
begin
for i:=1 to n do
for j:=1 to n do
map[i,j]:=-1;
for i:=1 to n do begin
for j:=1 to n do begin
for k:=1 to min(length(word[i]),length(word[j]))-1 do begin
if copy(word[i],length(word[i])-k+1,k)=copy(word[j],1,k) then begin
map[i,j]:=length(word[j])-k;
break;
end;
end;
end;
end;
end;
procedure search(i,len:integer);
var
j:integer;
begin
if len>max then max:=len;
for j:=1 to n do begin
if (used[j]<2) and (map[i,j]<>-1) then begin
inc(used[j]);
search(j,len+map[i,j]);
dec(used[j]);
end;
end;
end;
begin
readln(n);
for i:=1 to n do
readln(word[i]);
readln(ch);
init;
max:=0;
for i:=1 to n do begin
t:=word[i,1];
if(t=ch) then begin
fillchar(used,sizeof(used),0);
used[i]:=1;
search(i,length(word[i]));
end;
end;
writeln(max);
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?