Skip to content
Narrow screen resolution Wide screen resolution Auto adjust screen size Increase font size Decrease font size Default font size default color grey color
         
 | 
VNOI - Olympic tin học Việt Nam

Điểm tin VOJ

Số thành viên:6040
Số bài tập:1001
Số bài nộp:722923
Bài nộp hôm nay:0

Top 10 thành viên xuất sắc

HạngThành viênĐiểm
1mr_invincible587.9
2white_cobra418.6
3hieult403.4
4phaleq384.0
5vodanh9x368.2
6con_nha_ngheo352.0
7flash_mt350.2
8darksabers349.8
9yenthanh132345.3
10rockman9x_94343.1
[VOJ] Mã nguồn #211 - SUBSTR dùng KMP
Ngày: 19-05-2011
Cập nhật: 19-05-2011
Người gửi: pitago_no_1
Ngôn ngữ: Pascal
Xem: 806

Điểm: 3.7/5 (15 Phiếu)


const   fi='Test.inp';
        fo='Test.out';
Var     a,b : ansistring;
        t   : array[0..1000000] of longint;
        m,n : longint;
        i,j : longint;
begin
    //    assign(input,fi);reset(input);
    //    assign(output,fo);rewrite(output);
 
        readln(a);
        m := length(a);
        readln(b);
        n := length(b);
        if(m<n) then exit;
 
        j:=0;
        t[1]:=0;
        for i:=2 to n do
          begin
           while((j>0)and(b[j+1]<>b[i])) do j:=t[j];
           if b[j+1]=b[i] then inc(j);
           t[i]:=j;
          end;
 
        j:=0;
        for i:=1 to m do
          begin
           while((j>0)and(b[j+1]<>a[i])) do j:=t[j];
           if b[j+1]=a[i] then inc(j);
           if j=n then
             begin
               write(i-n+1,#32);
               j:=t[n];
             end;
          end;
end.