• 单词接龙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.




  • 相关阅读:
    从头到尾测地理解KMP算法【转】
    【Android】使用BaseAdapter实现复杂的ListView【转】
    Git命令速查表【转】
    图解Git命令【转】
    Git-入门教程
    自定义Git【转】
    linux命令大全
    ppt转pdf网址
    【转】设置电脑眼睛保护色(背景色)
    【转】putty基本操作--不错
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/9500209.html
Copyright © 2020-2023  润新知