数据小,直接暴力枚举。
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
char m[105],d[105];
bool mm[205],dd[205];
int main()
{
int l1,l2,minn,maxx,ans;
bool flag;
memset(mm,0,sizeof(mm));
memset(dd,0,sizeof(dd));
flag=false;
gets(m);
gets(d);
l1=strlen(m);
l2=strlen(d);
if(l1>l2){
for(int i=0;i<l1;i++) mm[i]=m[i]-'1';
for(int i=0;i<l2;i++) dd[i]=d[i]-'1';
}
else{
for(int i=0;i<l2;i++) mm[i]=d[i]-'1';
for(int i=0;i<l1;i++) dd[i]=m[i]-'1';
}
maxx=max(l1,l2);
minn=min(l1,l2);
for(int i=0;i<=maxx;i++){
for(int j=0;j<minn;j++){
if(dd[j]&&mm[j+i]){
break;
}
if(j==minn-1) flag=true;
}
if(flag){
ans=max(maxx,i+minn);
break;
}
}
flag=false;
for(int i=0;i<=minn;i++){
for(int j=0;j<maxx;j++){
if(dd[j+i]&&mm[j]){
break;
}
if(j==minn-1) flag=true;
}
if(flag){
ans=min(ans,i+maxx);
break;
}
}
printf("%d\n",ans);
return 0;
}