题目见:http://wenku.baidu.com/view/816dfaf29e31433239689324.html
#include<fstream>
#include<string>
using namespace std;
int main()
{
ifstream fin ("prefix.in");
ofstream fout ("prefix.out");
string s="";//保存s
string p[201];//保存p序列
string str,str2;
int i=0,j,k;
int m;//保存p序列的个数
int dp[200010]={0};
int result=0;
while(fin>>p[i] && p[i]!="." )
{
i++;
}
m=i;
while(fin>>str2)
{
s+=str2;
}
dp[0]=1;
for(i=0;i<s.length();i++)
{
if(!dp[i])
continue;
for(j=0;j<m;j++)
{
bool b=false;
for(k=0;k<p[j].length();k++)
{
if(p[j][k]!=s[i+k])
{
b=true;
break;
}
}
if(!b)
{
dp[i+p[j].length()]=1;
if(i+p[j].length()>result)
result=i+p[j].length();
}
}
}
fout<<result<<endl;
}
Longest Prefix
最新推荐文章于 2023-03-04 16:49:08 发布