zoukankan      html  css  js  c++  java
  • [POJ1035]Spell checker

    题目大意:输入一个字典,再输入一些单词,如果单词在字典里有的则输出“*** is correct”,否则如果字典里某些单词能通过增加/删除/修改一个字符变成输入的单词,则依次输出这些单词。

    思路:模拟、字符串处理。

    按照题目要求模拟即可。

     

    C++ Code:

     1 #include<cstring>
     2 #include<cstdio>
     3 using namespace std;
     4 char dic[10005][18];
     5 int n=1;
     6 char s[18];
     7 int main(){
     8     while(scanf("%s",dic[n])&&dic[n][0]!='#')n++;
     9     n--;
    10     while(scanf("%s",s)&&s[0]!='#'){
    11         bool flag=false;
    12         printf("%s",s);
    13         for(int i=1;i<=n;i++)if(strcmp(dic[i],s)==0){//判断在字典中有该单词的情况 
    14             flag=true;
    15             break;
    16         }
    17         if(flag){
    18             printf(" is correct
    ",s);
    19             continue;
    20         }
    21         putchar(':');
    22         for(int i=1;i<=n;i++){
    23             int dicL=strlen(dic[i]),sL=strlen(s);
    24             if(dicL-sL==1){//判断删除一个字符符合条件的情况
    25                 int dicn=0,sn=0;
    26                 while(dic[i][dicn]==s[sn])dicn++,sn++;
    27                 dicn++;
    28                 while(dic[i][dicn]==s[sn]&&dicn!=dicL&&sn!=sL)dicn++,sn++;
    29                 if(dicn==dicL&&sn==sL)printf(" %s",dic[i]);
    30             }else
    31             if(sL-dicL==1){//判断插入一个字符符合条件的情况 
    32                 int dicn=0,sn=0;
    33                 while(dic[i][dicn]==s[sn])dicn++,sn++;
    34                 sn++;
    35                 while(dic[i][dicn]==s[sn]&&dicn!=dicL&&sn!=sL)dicn++,sn++;
    36                 if(dicn==dicL&&sn==sL)printf(" %s",dic[i]);
    37             }else
    38             if(sL==dicL){//判断修改一个字符符合条件的情况 
    39                 int dicn=0,sn=0;
    40                 while(dic[i][dicn]==s[sn])dicn++,sn++;
    41                 dicn++,sn++;
    42                 while(dic[i][dicn]==s[sn]&&dicn!=dicL&&sn!=sL)dicn++,sn++;
    43                 if(dicn==dicL&&sn==sL)printf(" %s",dic[i]);
    44             }
    45         }
    46         putchar('
    ');
    47     }
    48     return 0;
    49 }
  • 相关阅读:
    回溯法(背包问题和八皇后问题)
    wxidgets知识点
    计算机组成原理十套练习-白中英(B1 B2 B3 B4 B5 B6 B7B8 B9 B10)
    mbed sdk结构
    CC2540/2541软件开发指南
    GNU Utility
    迭代(iterate)和递归(recursion)的区别
    最长回文子串的求解(java)
    1、surrounded-regions
    mvn compile 出错 [ERROR] 不再支持源选项 1.5。请使用 1.6 或更高版本。
  • 原文地址:https://www.cnblogs.com/Mrsrz/p/6885782.html
Copyright © 2011-2022 走看看