• <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)  編輯 收藏 引用 所屬分類: 格式.輸入輸出.數據類型
            <2009年7月>
            2829301234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            友情鏈接

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久综合狠狠综合久久| 亚洲综合日韩久久成人AV| 久久人人爽爽爽人久久久| 亚洲国产精品无码久久一区二区| 免费无码国产欧美久久18| 亚洲精品无码成人片久久| 国产亚洲精品自在久久| 精品乱码久久久久久夜夜嗨| 欧美日韩精品久久久久| 狠狠综合久久综合88亚洲 | 伊人久久精品无码av一区| 亚洲国产精品久久电影欧美| 女人香蕉久久**毛片精品| 伊人久久大香线蕉成人| 久久99国产精品一区二区| 欧美精品丝袜久久久中文字幕| 香蕉久久夜色精品升级完成| 久久狠狠一本精品综合网| 久久天堂AV综合合色蜜桃网| 欧美日韩中文字幕久久久不卡| 老色鬼久久亚洲AV综合| 青青青青久久精品国产h久久精品五福影院1421 | 久久精品国产精品亚洲毛片| 久久国产高清一区二区三区| 无码人妻少妇久久中文字幕蜜桃| 久久99国产一区二区三区| 国产成人久久激情91| 一本一道久久综合狠狠老| 色诱久久av| 久久精品成人欧美大片| 国产91色综合久久免费| 色综合久久无码五十路人妻| 亚洲综合久久久| 亚洲国产香蕉人人爽成AV片久久| 品成人欧美大片久久国产欧美| 久久久久久国产精品无码超碰| 一本久久a久久精品亚洲| 综合久久国产九一剧情麻豆| 大香伊人久久精品一区二区| 无码任你躁久久久久久| 一本一本久久a久久精品综合麻豆|