📄 prefix.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 + -