【题目描述】
【题目分析】
刚开始想了一会没有想到什么很好的算法,看到了长度最多为100,就知道自己想的没有什么意义了,直接暴力,把每一种填法都试一下就知道了。适当剪枝一下(一个简单的乐观函数)
【AC代码】
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<climits>
#include<queue>
#include<vector>
#include<set>
#include<map>
using namespace std;
typedef long long ll;
const int INF=0x3f3f3f3f;
const int MAXN=2e2+5;
char s1[MAXN],s2[MAXN];
int ans,len;
int main()
{
int len1,len2;
bool flag;
while(~scanf("%s%s",s1,s2))
{
len1=strlen(s1); len2=strlen(s2);
ans=len1+len2;
for(int i=0;i<len1;i++)
{
len=max(len1,i+len2);
if(len>=ans) continue;
flag=true;
int u=i; int v=0;
while(u<len1 && v<len2)
{
if(s1[u]-'0'+s2[v]-'0'>3)
{
flag=false;
break;
}
u++; v++;
}
if(flag)
ans=len;
}
for(int i=0;i<len2;i++)
{
len=max(len2,i+len1);
if(len>=ans) continue;
flag=true;
int v=i; int u=0;
while(u<len1 && v<len2)
{
if(s2[v]-'0'+s1[u]-'0'>3)
{
flag=false;
break;
}
u++; v++;
}
if(flag)
ans=len;
}
printf("%d\n",ans);
}
return 0;
}