首先我们知道假如确定了某个长度的项链,那么多的肯定去掉。
我们可以先找两个串找出它们的公共部分,其余的删掉,再确定第三条。
由于三个项链是像栈一样的存储方式,我们从0开始往上有一个不同的话,后面的都得换,如果还要加入珠子的话操作不就更多了吗/
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int len[10];
char str[10][100];
int main()
{
for(int i=1;i<=3;i++)
{
scanf("%d%s",&len[i],str[i]+1);
}
int ans=len[1]+len[2]+len[3];
int co,res,tmp;
for(int i=1;i<=3;i++)
{
for(int j=i+1;j<=3;j++)
{
tmp=co=0;
for(;co<min(len[i],len[j])&&str[i][co+1]==str[j][co+1];co++);
int k=6-i-j;
res=len[i]-co+len[j]-co;
for(;tmp<min(len[k],co)&&str[i][tmp+1]==str[k][tmp+1];tmp++);
if(co>=tmp) res+=(co-tmp)+len[k]-tmp;
ans=min(ans,res);
}
}
printf("%d\n",ans);
return 0;
}