单词接龙(words)
【问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
描述】:单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,
要求
对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗
出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部分不能存在包含关系,例如at和atide 间不能相连。
【输入数据】
输入的第一行为一个单独的整数n(n≤20)
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示单词数,以下n行每行有一个单词,输入的最后一行为一个单个字符,表示“龙”开头的字母。你可以假定以此字母开头的“龙”一定存在。
【输出数据】
仅一个整数,为符合条件的最长的龙的长度。
【样例】
words.in
5
at
touch
cheat
choose
tact
a
words.out
23
【说明】
连成的“龙”为atoucheatactactouchoose。
var a:array[0..20,0..20] of boolean;
c:array[0..20,0..20] of longint;
b,d:array[0..20] of longint;
s:array[1..20] of string;
ch:char;
n,i,j,k,t,max:longint;
function superfish(i,j:longint):boolean;
var k,l1,l2,l:longint;
begin
superfish:=false;
l1:=length(s[i]);
l2:=length(s[j]);
if l1
max then max:=s;
for i:=1 to n do
if (b[i]<2) and (a[k,i]) then
begin
inc(b[i]);
work(i,s+d[i]-c[k,i]);
dec(b[i]);
end;
end;
begin
assign(input,'words.in');
assign(output,'words.out');
reset(input);
rewrite(output);
readln(n);
for i:=1 to n do
begin
readln(s[i]);
d[i]:=length(s[i]);
end;
readln(ch);
for i:=1 to n do
for j:=1 to n do
a[i,j]:=superfish(i,j);
for i:=1 to n do
if s[i][1]=ch then
begin
b[i]:=1;
work(i,d[i]);
b[i]:=0;
end;
writeln(max);
close(input);close(output); end.