0
已采纳
赵毅恒
资深守护
资深守护
先定义一个结构体,然后进行一系列操作
函数代码如下:
struct sentence{
string sen;
int len;
int mark;
}a[21];
int sum,lenth=1,maxn=0;
int judge(string u,string i)
{
int m=min(u.length(),i.length());
for(int w=1;w<m;w++)
{
if(u.substr(u.length()-w)==i.substr(0,w)) return w;
}
return 0;
}
void dfs(string b)
{
maxn=maxn<lenth?lenth:maxn;
for(int i=1;i<=sum;i++)
{
if(a[i].mark<2)
{
a[i].mark++;
if(judge(b,a[i].sen)>0)
{
int res=judge(b,a[i].sen);
lenth=lenth+a[i].len-res;
dfs(a[i].sen);
lenth=lenth-a[i].len+res;
res=0;
}
a[i].mark--;
}
}
}
0