zoukankan      html  css  js  c++  java
  • POJ 1035 Spell checker

    按照 CSGrandeur 大牛的给出的方法做的;

    暴力即可;

    判断是否可以添加一个 字符得到时,有点小技巧,具体见代码;

    # include <stdio.h>
    # include <string.h>
    
    # define WL 17
    
    int n;
    char dic[10005][WL], word[WL];
    
    char exist(char *buf)
    {
        int i;
    
        for (i = 0; i < n; ++i)
        {
            if (strcmp(dic[i], word) == 0) return 1;
        }
    
        return 0;
    }
    
    char replace(char *x, char *y)
    {
        int i, lenx, leny, cnt;
    
        lenx = strlen(x), leny = strlen(y);
        if (lenx != leny) return 0;
        for (cnt = 0, i = 0; i < lenx; ++i)
        {
            if (x[i] != y[i]) ++cnt;
            if (cnt > 1) return 0;
        }
        return 1;
    }
    
    char add(char *x, char *y)
    {
        int i, j, lenx, leny, cnt;
    
        lenx = strlen(x), leny = strlen(y);
        if (leny != lenx+1) return 0;
        for (cnt = 0, i = 0, j = 0; i < leny; ++i, ++j)
        {
            if (x[i] != y[j]) ++cnt, --i;
            if (cnt > 1) return 0;
        }
        return 1;
    }
    
    void find(char *buf)
    {
        int i;
    
        printf(":");
        for (i = 0; i < n; ++i)
        {
            if (replace(dic[i], buf) || add(buf, dic[i]) || add(dic[i], buf))
                printf(" %s", dic[i]);
        }
    }
    
    int main()
    {
        for (n = 0; scanf("%s", dic[n]), dic[n][0] != '#'; ++n) ;
        for ( ; scanf("%s", word), word[0] != '#'; )
        {
            printf("%s", word);
            if (exist(word)) printf(" is correct");
            else find(word);
            putchar('\n');
        }
    
        return 0;
    }

    //

  • 相关阅读:
    搭建单区域DNS服务器
    安装一个KVM服务器
    配置HTTPS网站服务器
    部署并测试动态WSGI站点
    java内置的四大函数式接口
    java自定义异常类
    java方法重写的规定
    spring跨重定向传递数据
    SpringEl表达式(转)
    Spring中的@conditional注解
  • 原文地址:https://www.cnblogs.com/JMDWQ/p/2582718.html
Copyright © 2011-2022 走看看