• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 195,  comments - 30,  trackbacks - 0
            Spell Checker
            Status In/Out TIME Limit MEMORY Limit Submit Times Solved Users JUDGE TYPE
            stdin/stdout 3s 8192K 135 46 Standard

            You, as a member of a development team for a new spell checking program, are to write a module that will check the correctness of given words using a known dictionary of all correct words in all their forms.

            If the word is absent in the dictionary then it can be replaced by correct words (from the dictionary) that can be obtained by one of the following operations:

            • deleting of one letter from the word;
            • replacing of one letter in the word with an arbitrary letter;
            • inserting of one arbitrary letter into the word.

            Your task is to write the program that will find all possible replacements from the dictionary for every given word.

            Input

            This problem consists of several test cases, each of which is described below:

            The first part of each test case contains all words from the dictionary. Each word occupies its own line. This part is finished by the single character '#' on a separate line. All words are different. There will be at most 10000 words in the dictionary.

            The next part of the test case contains all words that are to be checked. Each word occupies its own line. This part is also finished by the single character '#' on a separate line. There will be at most 50 words that are to be checked.

            All words in the input (words from the dictionary and words to be checked) consist only of small alphabetic characters and each one contains 15 characters at most.

            The first line of the input contains an integer N, which is the number of test cases in the input, followed by N test cases described above.

            Output

            For each test case, first write to the output 'Scenario #k:', where k is the number of test case of input. Then on the next line write to the output exactly one line for every checked word in the order of their appearance in the second part of the test case. If the word is correct (i.e. it exists in the dictionary) write the message: "<checked word> is correct". If the word is not correct then write this word first, then write the character ':' (colon), and after a single space write all its possible replacements, separated by spaces. The replacements should be written in the order of their appearance in the dictionary (in the first part of the input file). If there are no replacements for this word then the line feed should immediately follow the colon.

            Print a blank line after each test case.

            Sample Input

            1
            i
            is
            has
            have
            be
            my
            more
            contest
            me
            too
            if
            award
            #
            me
            aware
            m
            contest
            hav
            oo
            or
            i
            fi
            mre
            #
            

            Sample Output

            Scenario #1:
            me is correct
            aware: award
            m: i my me
            contest is correct
            hav: has have
            oo: too
            or:
            i is correct
            fi: i
            mre: more me
            

            啟發:map用于查找字符串還是很爽的。
            #include<iostream>
            #include
            <cstdlib>
            #include
            <map>
            #include
            <math.h>
            #include
            <string>
            using namespace std;
            map 
            <string,int> ans;
            bool solve(char *s,char *key)
            {
                
            int i=strlen(s);
                
            int j=strlen(key);
                
            int num=0;
                
            if(abs(i-j)>1)
                
            return false;
                
            else
                {
                    
            if(i-j==1)//比字典中多一個 
                    {
                        
            for(int k=0;k<j&&num<=2;k++)
                        {
                            
            if(s[k+num]!=key[k])
                            {
                                num
            ++;
                                k
            --;
                            }
                        }
                        
            if(num<=1)
                        
            return true;
                        
            else
                        
            return false;
                    }
                    
            if(j-i==1)//比字典中少一個 
                    {
                        
            for(int k=0;k<i&&num<=2;k++)
                        {
                            
            if(s[k]!=key[k+num])
                            {
                                num
            ++;
                              k
            --;
                            } 
                        }
                        
            if(num<=1)
                        
            return true;
                        
            else
                        
            return false;
                    }
                    
            if(i==j)
                    {
                        
            for(int k=0;k<i&&num<=2;k++)
                        {
                            
            if(s[k]!=key[k])
                            num
            ++;
                        }
                        
            if(num==1)
                        
            return true;
                        
            else
                        
            return false;
                    }
                }
            }
              
            int main()
              {
              freopen(
            "s.txt","r",stdin);
              freopen(
            "key.txt","w",stdout);
              
            int num,casetime=0;
              
            int i,j,k;
              cin
            >>num;
              
            char s[16];
              
            char str[10000][16];
              
            while(num--)
              {
                    casetime
            ++;
                    cout
            <<"Scenario #"<<casetime<<":"<<endl;
                    ans.clear();
                    i
            =0;
                    
            while(1)
                    {
                        scanf(
            "%s",&str[i]);
                        
            if(str[i][0]=='#')
                          
            break;
                        ans[str[i]]
            =1;
                        i
            ++;
                    }
                    
            while(1)
                    {
                        scanf(
            "%s",&s);
                        
            if(s[0]=='#')
                          
            break;
                        
            if(ans[s]==1
                        {
                            cout
            <<s<<" is correct"<<endl;

                        } 
                        
            else
                        {
                            cout
            <<s<<":";
                           
            for(int j=0;j<i;j++)
                          {
                            
            if(solve(s,str[j]))
                              cout
            <<" "<<str[j];
                          }
                          cout
            <<endl;
                        } 
                    }
                    cout
            <<endl;
                    
              }

              
            //system("PAUSE");
              return   0;
              }
            posted on 2009-07-06 20:13 luis 閱讀(275) 評論(0)  編輯 收藏 引用 所屬分類: 格式.輸入輸出.數據類型
            <2009年7月>
            2829301234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            友情鏈接

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲国产精品婷婷久久| 无码久久精品国产亚洲Av影片| 久久综合综合久久狠狠狠97色88| 国产精品一久久香蕉国产线看| 国产高清国内精品福利99久久| 久久久久久青草大香综合精品| 亚洲AV日韩精品久久久久久久| 久久久久久综合一区中文字幕| 亚洲国产天堂久久综合| 2020久久精品国产免费| 久久无码国产| 日本精品久久久中文字幕| 久久笫一福利免费导航 | 精品久久久久久久久久中文字幕| 亚洲国产成人久久综合区| 国产精品久久久久久久| 久久久久久国产精品美女| 国产成人久久777777| 麻豆成人久久精品二区三区免费| 久久人妻少妇嫩草AV无码蜜桃| 国产国产成人精品久久| 久久久久久国产精品无码下载 | 欧美精品国产综合久久| 国产成人久久精品麻豆一区| 日韩人妻无码精品久久久不卡| 伊人久久亚洲综合影院| 久久青青国产| 青青草原综合久久大伊人导航| 久久99精品综合国产首页| 成人妇女免费播放久久久| 久久99久国产麻精品66| 99久久国产宗和精品1上映| 2021最新久久久视精品爱| 婷婷久久精品国产| 久久国产影院| 亚洲国产成人精品久久久国产成人一区二区三区综 | 大蕉久久伊人中文字幕| 国产成人久久久精品二区三区| 国产成年无码久久久久毛片| 国产精品久久国产精品99盘| 精品免费tv久久久久久久|