莫名其妙的问题
查看原帖
莫名其妙的问题
159833
码迷元首楼主2022/11/14 19:20

与一本通提高组 P74 75,一毛一样。

出了啥子问题?

#include<bits/stdc++.h>
namespace k
{
	std::string a,b;
	int const maxn=10e6+1;
	int next[maxn],la,lb,j;
	void getnext()
	{
		j=0;
	    for (int i=1;i<lb;i++)
		{
			while(j>0&&b[i+1]!=b[j+1])
	    		j=next[j];     
	    	if(b[j+1]==b[i+1])j++;    
	    	next[i+1]=j;
	    }
	}
	void kmp()
	{
		j=0;
	    for(int i=0;i<la;i++)
		{
	    	while(j>0&&b[j+1]!=a[i+1])
	    		j=next[j];
	    	if(b[j+1]==a[i+1]) 
	    		j++;
	    	if(j==lb) 
			{
				std::cout<<i-lb+2<<std::endl;
				j=next[j];
			}
	    }
	}
	void main()
	{
		std::cin>>a>>b;
		la=a.size();
		lb=b.size();
		
		getnext();
		kmp();
		
		for (int i=0;i<lb;i++)
	    	std::cout<<next[i]<<" ";
	}
}
int main()
{
	k::main();
}
2022/11/14 19:20
加载中...