建议大家学一学比较巧妙的KMP算法吧,很有意思。推荐个题目:POJ3167 Cow Patterns 题解我会发在本博里。

这个KMP就木有什么好说的了吧,大家找百度百科学一下就可以了~

CODE

Program KMP;//By_Thispoet
Const 
	maxn=1000005;
Var
	st,s						:Ansistring;//st is long and s is short
	pre							:Array[-1..maxn]of Longint;
	i,k,p,q,ans,n				:Longint;
	
BEGIN

	readln(n);
	while n>0 do 
		begin
			readln(st);
			readln(s);
			pre[1]:=0;
			for i:=2 to length(st) do 
				begin
					k:=pre[i-1];
					while (k<>0)and(st[k+1]<>st[i]) do k:=pre[k];
					if st[k+1]<>st[i] then pre[i]:=0 else pre[i]:=k+1;
				end;
			
			p:=0;q:=0;ans:=0;
			while q<length(s) do 
				begin
					inc(q);
					while (p<>0)and(st[p+1]<>s[q]) do p:=pre[p];
					if st[p+1]=s[q] then inc(p);
					if p=length(st) then 
						begin
							inc(ans);
							p:=pre[p];
						end;
				end;
			writeln(ans);
			dec(n);
		end;
	
END.