Uva 1588 - Kickdown

来源:互联网 发布:flash文字特效软件 编辑:程序博客网 时间:2024/04/30 07:38

原题网址:


https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=830&page=show_problem&problem=4463


题意:

给出两个由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;}



0 0