紫书 习题3-11 换抵挡装置(Kickdown,UVa1588)

#include
#include
#include
#include
#include
#include
#include
#include
#include

using namespace std;

const int MAX=110;

int f(char* a,char* b)
{
	int m[2*MAX],n[MAX];
    int count=0,k,flag=0;
    memset(m,0,sizeof(m));
    memset(n,0,sizeof(n));
	for(int i=0;i<strlen(a);i++)
		m[i]=a[i]-'0';
	for(int i=0;i<strlen(b);i++)
		n[i]=b[i]-'0';
	for(int i=0;i<strlen(a);i++)
	{
		int flag=0;
		for(int j=0;j<strlen(b);j++)
		{
			if(m[i+j]+n[j]>3)
				break;
			if(j==strlen(b)-1)
				flag=1;
		}
		if(flag)
			return max(i+strlen(b),strlen(a));
	}
}

int main()
{
	char p[MAX],q[MAX];
    while(scanf("%s %s",p,q)!=EOF)
    {
  		printf("%d\n",min(f(p,q),f(q,p)));
	}
	return 0;
}

你可能感兴趣的:(紫书 习题3-11 换抵挡装置(Kickdown,UVa1588))