poj2752

来源:互联网 发布:淘宝大学讲师雷雨 编辑:程序博客网 时间:2024/06/05 16:36

【题意】

求对于一个字符串满足前n个字符全等于后n个字符的n有哪些

【输入】

多组数据,每行一个字符串(不超过400000位)

【输出】

每组数据一行,输出一行数表示从小到大满足的n


kmp求next数组,之后倒着扫描即可……

不知为何这种题也能wa很多次……


program poj2752;var  tot,n,i,j,k:longint;  s:ansistring;  ans,next:array [0..400003] of longint;begin  next[1]:=0;  while not seekeof do    begin      readln(s);      n:=length(s);      i:=1;      j:=0;      while i<n do        if (j=0)or(s[i]=s[j]) then          begin            inc(i);            inc(j);            next[i]:=j;          end                              else          j:=next[j];      tot:=0;      i:=n;      while (i<>0) do        begin          if s[i]=s[n] then            begin              inc(tot);              ans[tot]:=i;            end;          i:=next[i];        end;      for i:=tot downto 1 do        begin          write(ans[i]);          if i<>1 then write(' ');        end;      writeln;    end;end.


原创粉丝点击