Uva1588 Kickdown

来源:互联网 发布:农村淘宝加盟有钱挣吗 编辑:程序博客网 时间:2024/06/05 19:21

题意:给出两个长度分别为n1,n2(n1,n2<=100)且每列高度只为1或2的长条。需要将它们放入一个高度为3的容器,问能够容纳它们的最短容器长度。


分析:只要枚举一个串的起始位置看能否放下另外一个串就行了,然后再枚举另外一个串。

注意串不能进行反转!!!


代码:


#include<iostream>#include<stdio.h>#include<algorithm>#include<string.h>#include<cmath>using namespace std;int main(){    char s1[105],s2[105];    int n1,n2,ans;    while(scanf("%s%s",s1,s2)!=EOF)    {        n1=strlen(s1);        n2=strlen(s2);        ans=n1+n2;        bool ok;        for(int i=0;i<n1;i++)        {            ok=true;            int k=i;            for(int j=0;j<n2;j++)            {                if(k<n1&&s1[k++]=='2'&&s2[j]=='2')                {                    ok=false;                    break;                }            }            if(ok)            {                ans=min(ans,max(n1,n2+i));                break;            }        }        for(int i=0;i<n2;i++)        {            ok=true;            int k=i;            for(int j=0;j<n1;j++)            {                if(k<n2&&s2[k++]=='2'&&s1[j]=='2')                {                    ok=false;                    break;                }            }            if(ok)            {                ans=min(ans,max(n2,n1+i));                break;            }        }        printf("%d\n",ans);    }    return 0;}


0 0
原创粉丝点击