• <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 閱讀(276) 評論(0)  編輯 收藏 引用 所屬分類: 格式.輸入輸出.數據類型
            <2011年2月>
            303112345
            6789101112
            13141516171819
            20212223242526
            272812345
            6789101112

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            友情鏈接

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            99久久人妻无码精品系列 | 国产成人综合久久精品尤物| 久久久久人妻一区精品性色av| 一本久久久久久久| 精品国产91久久久久久久| 国产午夜精品久久久久九九电影| 久久久精品国产亚洲成人满18免费网站| 99久久国产综合精品网成人影院| 一本大道久久a久久精品综合| 91久久精品视频| 亚洲午夜无码久久久久小说| 久久人人爽人人爽人人AV东京热| 日本国产精品久久| 国产一区二区三区久久精品| 日韩精品久久久久久| 少妇精品久久久一区二区三区| 亚洲欧美精品一区久久中文字幕| 狠狠色丁香婷婷久久综合不卡| 精品水蜜桃久久久久久久| 久久人人爽人人爽人人片AV东京热 | 一本色道久久综合狠狠躁| 国产福利电影一区二区三区久久老子无码午夜伦不 | 亚洲日韩欧美一区久久久久我| 国产综合久久久久| 久久久久国产精品嫩草影院| 久久综合九色综合欧美就去吻| 欧美激情精品久久久久| 久久99精品久久久久久久久久| 国内精品伊人久久久久妇| 久久久久免费视频| 国产精品日韩深夜福利久久 | 久久久久人妻精品一区| 亚洲综合日韩久久成人AV| 国内精品伊人久久久影院| 亚洲精品成人久久久| 国产香蕉久久精品综合网| 2021最新久久久视精品爱| 中文字幕无码免费久久| 久久99精品国产自在现线小黄鸭| 久久婷婷激情综合色综合俺也去| 久久伊人影视|