原题网址:
题意:
给出两个由1和2组成的字符串,问至少需要多长的高度为3的容器能装下
很久以前感觉好难,没思路,放在那了,今天拿出来一看,好水的暴力题,成功水掉......
注意:两个没有确定前后顺序,所以都要考虑一下
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char a[105],b[105];
int lena,lenb;
bool judge(char x[],char y[],int id)
{
int lenx=strlen(x),leny=strlen(y);
for(int i=id;i<lenx&&(i-id)<leny;++i)
{
if(x[i]+y[i-id]-96>3)//判断是否大于3
{
return 0;
}
}
return 1;
}
int slove()
{
int ans=lena+lenb;
for(int i=0;i<lena||i<lenb;++i)
{
if(i<lena&&judge(a,b,i))//假设b在前
{
ans=min(ans,max(lena-i,lenb)+i);//画画图就看明白了
}
if(i<lenb&&judge(b,a,i))//假设a在前
{
ans=min(ans,max(lenb-i,lena)+i);
}
}
return ans;
}
int main()
{
while(gets(a)&&gets(b))
{
lena=strlen(a);lenb=strlen(b);
printf("%d\n",slove());
}
return 0;
}