UVa-1588 Kickdown

思路比较简单,注意要双向。
我一直误以为两次cin>>a;时第二次会自动把数组清零,结果WA了我好多次,最后才发现原来不是这样的。
比如这样的:

    char a[15]={};

    cin>>a;

    for(int i=0;i<10;i++)

        printf("%d ",a[i]);

    printf("\n");

    cin>>a;

    for(int i=0;i<10;i++)

        printf("%d ",a[i]);

这里写图片描述
也就是说第二次cin的时候只是会把紧接着’d’后面的字符变为’\0’!
最后的代码是:

#include<iostream>

#include<cstdio>

#include<cstring>

using namespace std;

int main()

{

    //freopen("in.txt","r",stdin);

    //freopen("out.txt","w",stdout);

    char a[300]={},b[300]={};

    while(cin>>a>>b)

    {

        int ans[5]={},ch3='1'+'2';

        for(int ii=1;ii<=2;ii++,swap(a,b))

        {

            int la=strlen(a),lb=strlen(b),p=0,i=0;

            for(;p<lb;p++)

            {

                for(i=0;i<la;i++)

                    if(a[i]+b[p+i]>ch3)

                        break;

                if(i==la)

                    break;

            }

            ans[ii]=max(lb,p+la);

        }

        cout<<min(ans[1],ans[2])<<endl;

        memset(a,0,sizeof(a));

        memset(b,0,sizeof(b));

    }

}

你可能感兴趣的:(uva)