测评机: Xeond[6]
得分: 10分
提交日期: 2012-10-17 13:28:00
有效耗时: 47毫秒
测试结果1: 选手程序无输出
测试结果2: 选手程序无输出
测试结果3: 选手程序无输出
测试结果4: 选手程序无输出
测试结果5: 选手程序无输出
测试结果6: 选手程序无输出
测试结果7: 选手程序无输出
测试结果8: 选手程序无输出
测试结果9: 选手程序无输出
测试结果10: 通过本测试点|有效耗时47ms
#include <iostream>
#include <string>
using namespace std;
string A,s[2];
int m=0,d[2],ans,g,lenA,lenB,next[10000];
void Nt()
{
int j=-1;
next[0]=-1;
for(int i=1;i<lenA;i++)
{
while( j>-1 && A[i]!=A[j+1] )
j=next[j];
if( A[i]==A[j+1] )
j++;
next[i]=j;
}
}
int KMP()
{
int dm=m^1;
int j=-1;
d[dm]=0;
for(int i=0;i<d[m];i++)
{
++d[dm];
s[dm][ d[dm]-1 ]=s[m][i];
while( j>-1 && A[j+1]!=s[m][i])
j=next[j];
if( A[j+1]==s[m][i] )
j++;
if( j==lenA-1 )
{
j=-1;
d[dm]-=lenA;
ans++;
}
}
if(d[dm]==d[m] || d[dm]==0) return 0;
m=dm;
return 1;
}
int main()
{
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
cin>>A>>s[0];
lenA=A.size();d[0]=s[0].size();
Nt();
for(;KMP()==1;);
cout<<ans<<endl;
return 0;
}