单词接龙pascal程序
題意
現在我們已知一組單詞,且給定一個開頭的字母,要求出以這個字母開頭的最長的“龍”(每個單詞都最多在“龍”中出現兩次),在兩個單詞相連時,其重合部分合為一部分,例如 beast和astonish,如果接成一條龍則變為beastonish,另外相鄰的兩部分不能存在包含關系,例如at 和 atide間不能相連。
var
a:array[0..20] of string;
b,c:array[0..20] of longint;
l,n:longint;
s:string;
ss,max:integer;
procedure link(tou:string);
var
k,j,i:longint;
s1,s2:string;
begin
? ? for i:=1 to n do
? ? if c[i]<2 then
? ? begin
? ? ? ? s:=a[i];
? ? ? ? if length(tou)>=b[i] then k:=b[i]-1 else k:=length(tou);
? ? ? ? s1:='';
? ? ? ? s2:='';
? ? ? ? for j:=1 to k do
? ? ? ? begin
? ? ? ? ? ? s1:=tou[length(tou)+1-j]+s1;
? ? ? ? ? ? s2:=s2+s[j];
? ? ? ? if s1=s2 then
? ? ? ? begin
? ? ? ? ? ? ss:=ss+b[i]-j;
? ? ? ? ? ? if ss>max then max:=ss;
? ? ? ? ? ? inc(c[i]);
? ? ? ? ? ? link(a[i]);
? ? ? ? ? ? dec(c[i]);
? ? ? ? ? ? ss:=ss+j-b[i];
? ? ? ? end;
? ? end;
end;
end;
begin
? ? readln(n);
? ? max:=0;
? ? for l:=1 to n do
? ? begin
? ? ? ? readln(s);
? ? ? ? a[l]:=s;
? ? ? ? b[l]:=length(s);
? ? ? ? c[l]:=0;
? ? end;
? ? readln(s);
? ? ss:=length(s);
? ? link(s);
? ? writeln(max);
end.
轉載于:https://www.cnblogs.com/YYC-0304/p/9500209.html
總結
以上是生活随笔為你收集整理的单词接龙pascal程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谁拿了最多奖学金pascal程序
- 下一篇: 混合牛奶pascal程序