码迷,mamicode.com
首页 > 其他好文 > 详细

Quicksearch1035

时间:2014-10-09 01:15:47      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   for   sp   div   c   on   

输入一部字典,输入若干单词

1  若某个单词能在字典中找到,则输出corret

2  若某个单词能通过 变换 或 删除 或 添加一个字符后,在字典中找得到,则输出这些单词,输出顺序根据  输入的那部字典的字典序

3  若某个单词无论操作与否都无法在字典中找得到,则输出空

 

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int Find(int a);
int n;
int lend[10001];
char Dt[10001][20],In[20],len;
int Find(int a)
{
    int i,t;
    t=lend[a]-len;
    if (t==-1)//
    {
        for (i=0;i<lend[a]&&Dt[a][i]==In[i];i++);//先找到第一个不同的位置
        for (;i<lend[a]&&Dt[a][i]==In[i+1];i++);//忽略了In中的一个字符
        if (i==lend[a]) return 0;
    }
    else if (t==0)
        {
            for (i=0;i<len&&Dt[a][i]==In[i];i++);
            for (i++;i<len&&Dt[a][i]==In[i];i++);//忽略了两个词中的一处不同
            if (i==len) return 0;
        }
        else if (t==1)
            {
                for (i=0;i<len&&Dt[a][i]==In[i];i++);
                for (;i<len&&Dt[a][i+1]==In[i];i++);//忽略了Dt[a]中的一个字符
                if (i==len) return 0;
            }
    return 1;
}
int main()
{
    int i;
    scanf("%s",&Dt[0][0]);//是应该这么写的吗?
    while (Dt[n][0]!=‘#‘)
    {
        lend[n]=strlen(Dt[n]);
        scanf("%s",&Dt[++n][0]);
    }
    scanf("%s",In);
    while (In[0]!=‘#‘)
    {
        len=strlen(In);
        for (i=0;i<n;i++)
            if (lend[i]==len&&strcmp(Dt[i],In)==0)
            {
                printf("%s is correct\n",In);
                break;
            }
        if (i==n)
        {
            printf("%s:",In);
            for (i=0;i<n;i++)
                if (Find(i)==0) printf(" %s",Dt[i]);
            printf("\n");
        }
        scanf("%s",In);
    }
    return 0;
}

 

  

 

Quicksearch1035

标签:style   blog   io   ar   for   sp   div   c   on   

原文地址:http://www.cnblogs.com/notlate/p/4011639.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!