1.将s2左右各补s1.size()个‘0’。
2.将s1和s2左对齐,计算是否能嵌合;若嵌合,计算组合长度,并比较是否为当前出现的最小长度。s1左端补一个‘0’。
3.重复2,共计L1+L2次。
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
//freopen("input.txt","r",stdin);
int i,j,l1,l2,flag,mini,length;
string s1,s2;
while(cin>>s1>>s2)
{
l1=s1.size(),l2=s2.size(),mini=l1+l2;
for(i=0;i<l1;i++)
s2='0'+s2+'0';
for(i=0;i<l1+l2;i++)
{
for(j=0;j<s1.size();j++)
{
flag=1;
if(s1[j]+s2[j]-2*'0'>3)
{
flag=0;
break;
}
}
if(flag)
{
length=max(l1+l2,l1+i)-min(i,l1);
if(length<mini)
mini=length;
}
s1='0'+s1;
}
cout<<mini<<endl;
}
return 0;
}