显示代码纯文本
#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include <set>
using namespace std;
int nLen[300],Len_All=0,Max_Len=0;
string strDate[300];
string strAll;
bool f[200002]={0};
int n=1;
bool find(string s2,int x)
{
for(int i=1;i<=n;++i)
{
if(nLen[i]==x)
{
if(strDate[i]==s2)
{
return true;
}
}
}
return false;
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
while(cin>>strDate[n])
{
if(strDate[n]==".")
{
break;
}
else
{
nLen[n]=strDate[n].size();
++n;
}
}
n--;
string s1;
while(cin>>s1)
{
strAll+=s1;
}
Len_All=strAll.size();
strAll="#"+strAll;
f[0]=true;
for(int i=1;i<=Len_All;++i)
{
for(int j=i-1,c=1;j>=0&&c<=10;j--,c++)
{
if(f[j])
{
s1=strAll.substr(j+1,i-j);//注意下标
int x=s1.size();
if(find(s1,x))
{
f[i]=true;
Max_Len=i;
break;
}
}
}
}
cout<<Max_Len;
return 0;
}