Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
KMP居然T了type arr=array [1..100000] of char; var next:array [1..100000] of longint; s1,s2:arr; l2,l1:longint; ch:char; procedure KMP_SELF(s1:arr); var i,j:longint; begin fillchar(next,sizeof(next),0); j:=0; for i:=1 to l1 do begin if (j<>0) and (s1[j+1]<>s1[i]) then j:=next[j]; if s1[j+1]=s1[i] then inc(j); next[i]:=j; end; end; procedure KMP(s1,s2:arr); var i,j:longint; begin j:=0; for i:=1 to l2 do begin if (j<>0) and (s1[j+1]<>s2[i]) then j:=next[j]; if s1[j+1]=s2[i] then inc(j); if j=l1 then begin writeln('Yes'); j:=next[j]; exit; end; end; writeln('No'); end; begin while not eof do begin read(ch); while ch<>' ' do begin inc(l1);s1[l1]:=ch;read(ch); end; read(ch); while ord(ch)<>13 do begin inc(l2);s2[l2]:=ch;read(ch); end; read(ch); KMP_SELF(s1); KMP(s1,s2); end; end. 我手残 Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator