http://poj.org/problem?id=1035
暴力检索字符串,逐个处理即可。
#include<iostream>
#include<cstring>
using namespace std;
char a[11111][22];
char b[55][22]; int ai=1,bj=1;
bool d1(char a[],char b[])
{
int l1=strlen(a);
int flag=0;
for(int i=0;i<l1;i++)
if(a[i]!=b[i])
{
flag++;
if(flag>1)
return false;
}
return true;
}
bool d2(char a[],char b[])
{
int l1=strlen(a);
int i=0,j=0;
int flag=0;
while(i<l1)
{
if(a[i]!=b[j])
{
i++;
flag++;
if(flag>1)
return false;
}
else
{
i++;
j++;
}
}
return true;
}
int main(){
ai=1;
bj=1;
while(cin>>a[ai]&&a[ai][0]!='#')
{
ai++;
}
while(cin>>b[bj]&&b[bj][0]!='#')
{
bj++;
}
ai--;bj--;
int i,j;
for(i=1;i<=bj;i++)
{
int flag=0;
for(j=1;j<=ai;j++)
{
if(!strcmp(b[i],a[j]))
{
cout<<b[i]<<" is correct"<<endl;
flag=1;
}
}
if(flag==1)continue;
cout<<b[i]<<": ";
for(j=1;j<=ai;j++)
{
int l1=strlen(b[i]);
int l2=strlen(a[j]);
if(l1==l2)
{
if(d1(b[i],a[j]))
cout<<a[j]<<" ";
}
else if(l1-l2==1)
{
if(d2(b[i],a[j]))
cout<<a[j]<<" ";
}
else if(l1-l2==-1)
{
if(d2(a[j],b[i]))
cout<<a[j]<<" ";
}
}
cout<<endl;
}
return 0;
}