#include <stdio.h>
#include 
<stdlib.h>
#include 
<string.h>
#include 
<math.h>

#define N 10010
char   dict[N][20];
int    result[N];
int    len;

int  check( char a[20], char b[20] )
{
    
int l1= strlen(a), l2= strlen(b);
    
int num= 0;
    
    
if( l1== l2 )
    
{
        
forint i= 0; i< l1; ++i )
        
if( a[i]!= b[i] && ++num>= 2 ) return -1;
        
        
if( num== 0 )  return 2;
    }

    
else if( l1< l2 )
    
{
        
forint i= 0, j= 0; i< l1 && j< l2; ++i, ++j )
        
if( a[i]!= b[j] )
        
{
            
if++num>= 2 ) return -1;
            i
--;
        }

    }

    
else
    
{
        
forint i= 0, j= 0; i< l1 && j< l2; ++i, ++j )
            
if( a[i]!= b[j] )
            
{
                
if++num>= 2 ) return -1;
                j
--;
            }

    }


    
return 1;
}


int main()
{
    
char  str[20];
    
    
while( scanf("%s", str), strcmp( str, "#" )!= 0 )  strcpy( dict[len++], str );
    
while( scanf("%s", str), strcmp( str, "#" )!= 0 )
    
{
        
int size= strlen( str );
        
int tt= 0;
        
bool equal= false;
        
        
forint i= 0; i< len; ++i )
        
{
            
int ll= strlen( dict[i] );
            
            
if( abs( ll- size )< 2  )  
            
{
                
int  value= check( dict[i], str );
                
                
if( value== 1 )   result[tt++]= i;
                
else if( value== 2 )
                
{
                    printf(
"%s is correct\n", str);
                    equal
= true;
                    
                    
break;
                }

            }

        }

        
        
if!equal )
        
{
            printf(
"%s:", str );
            
forint i= 0; i< tt; ++i )
            printf(
" %s", dict[ result[i] ]);
            
            printf(
"\n");
        }
    
    }

    
    
return 0;
}

    
posted on 2008-10-30 17:36 Darren 阅读(237) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理