题目
代码:
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+5;
string collect[205];
int cnt=0;
string s;
bool dp[N];
int main(){
while(1){
string c;
getline(cin,c);
if(c==".")break;
c=c+" ";
string cc="";
for(int i=0;i<c.size();i++){
if(c[i]==' '){
collect[++cnt]=cc;
cc="";
}else cc+=c[i];
}
}
string c;
while(cin>>c){
s=s+c;
}
s=" "+s;
int sl=s.size();
dp[0]=1;
for(int i=0;i<sl;i++){
if(dp[i]==1){
for(int j=1;j<=cnt;j++){
int cl=collect[j].size();
int flag=1;
if(sl-i-1<cl)continue;
if(dp[i+cl]==1)continue;
for(int p1=i+1,p2=0;p1<sl && p2<cl;p1++,p2++){
if(s[p1]!=collect[j][p2]){
flag=0;
break;
}
}
if(flag)dp[i+cl]=1;
}
}
}
int ans=0;
for(int i=0;i<sl;i++){
if(dp[i]==1)ans=i;
}
cout<<ans;
return 0;
}