来看看,求改,

//可以重复用!!!!
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
using namespace std;
int n,used[20],maxn=0;
string a[50];
string sum,first;
void search_DFS(string x)
{
if(x.size()==1)
sum=x;
bool ans=0;
for( int i=0;i<n;i++)
{
if(used[i]<2)
{
int xtzm;
for( int j=x.size()-1;j>=0;j--)
{
if(x[j]==a[i][0])
{
xtzm=1;
ans=1;
while(x[j+xtzm]==a[i][xtzm])
xtzm++;
}
if(ans&&j+xtzm==x.size())
break;
if(ans&&j+xtzm!=x.size())
ans=0;
}
if(ans)
{
int len=sum.size();
sum+=a[i].substr(xtzm,a[i].size()-xtzm);
used[i]++;
search_DFS(a[i]);
ans=0;
used[i]--;
sum.erase(len,a[i].size()-xtzm);
}
}
}
if(!ans&&sum.size()>maxn)
maxn=sum.size();
return ;
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
cin>>first;
search_DFS(first);
cout<<maxn;
return 0;
}

0 条评论

目前还没有评论...

信息

ID
1311
难度
5
分类
搜索 点击显示
标签
递交数
3155
已通过
1011
通过率
32%
被复制
15
上传者