uva 1588 Kickdown

#include<iostream>
#include<cstring>
using namespace std;
int change(char ch)
{
    return ch-'0';
}
int minlen(char *a,char *b)
{
    int m,n;
    m=(int)strlen(a);
    n=(int)strlen(b);
    int c[100];
    int cnt=0;
    for(int i=0;i<m;i++)
    {
        for(int j=i,k=0;j<m&&k<n;j++,k++)
        {
            if(change(a[j])+change(b[k])>3) break;
            if(j==m-1||k==n-1)
            {
//                cout<<m+n-k-1<<" "<<k<<endl;
                c[cnt++]=m+n-k-1;
            }
        }
        if(!cnt) c[cnt++]=m+n;
    }
    int min=10000;
    for(int i=0;i<cnt;i++)
    {
        if(c[i]<min) min=c[i];
    }
    return min;
}
int main()
{
    char a[100],b[100];
    while(scanf("%s%s",a,b)!=EOF)
    {
        int min1,min2;
        min1=minlen(a,b);
        min2=minlen(b,a);
        if(min1>min2) cout<<min2<<endl;
        else cout<<min1<<endl;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
    }
    return 0;
}

你可能感兴趣的:(uva 1588 Kickdown)