⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prefix.pas

📁 Magio牛的usaco源代码
💻 PAS
字号:
{
ID:maigoak1
PROG:prefix
}

program prefix;
const
  maxp=200;
  maxl=200000;
var
  fin,fout:text;
  prim:array[1..maxp]of string[10];
  target:array[1..maxl]of char;
  ok:array[0..maxl]of boolean;
  prims,len,max,i,j:longint;
  s:string;
  c:char;
procedure extend(p:longint;s:string);
  var
    i,l,np:longint;
  begin
    l:=length(s);np:=p+l;
    if np>len then exit;
    for i:=1 to l do
      if target[p+i]<>s[i] then exit;
    ok[np]:=true;
    if np>max then max:=np;
  end;
begin
  assign(fin,'prefix.in');
  reset(fin);
  prims:=0;
  repeat
    readln(fin,s);
    if s='.' then break;
    while pos(' ',s)>0 do begin
      inc(prims);
      prim[prims]:=copy(s,1,pos(' ',s)-1);
      s:=copy(s,pos(' ',s)+1,length(s)-pos(' ',s));
    end;
    inc(prims);
    prim[prims]:=s;
  until false;
  len:=0;
  repeat
    read(fin,c);
    if (c<>chr(10)) and (c<>chr(13)) then begin
      inc(len);
      target[len]:=c;
    end;
  until eof(fin);
  close(fin);

  fillchar(ok,sizeof(ok),0);
  ok[0]:=true;
  max:=0;i:=-1;
  repeat
    inc(i);
    if ok[i] then
      for j:=1 to prims do
        extend(i,prim[j]);
  until i=max;

  assign(fout,'prefix.out');
  rewrite(fout);
  writeln(fout,max);
  close(fout);
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -