• <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)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            友情鏈接

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久99精品国产麻豆宅宅| 久久久久亚洲AV片无码下载蜜桃| 狠狠色婷婷久久一区二区| 波多野结衣久久一区二区| 国产∨亚洲V天堂无码久久久| 国产激情久久久久影院| 国色天香久久久久久久小说| 日韩精品久久久肉伦网站| 国产精品美女久久久网AV| 尹人香蕉久久99天天拍| 国产精品久久久99| 国产精品99久久久精品无码| 久久最近最新中文字幕大全 | 囯产精品久久久久久久久蜜桃| 久久无码人妻一区二区三区 | 久久综合色老色| 免费精品久久久久久中文字幕| 99久久婷婷国产综合亚洲| 久久99精品国产麻豆不卡| 韩国三级中文字幕hd久久精品| 亚洲精品乱码久久久久66| 一本久久a久久精品亚洲| 久久久久国产精品嫩草影院| 国产成人精品久久亚洲| 久久AV高清无码| 无码人妻精品一区二区三区久久 | 国产福利电影一区二区三区久久久久成人精品综合 | 亚洲精品高清国产一久久| www.久久热.com| 久久免费线看线看| 精品久久久久久无码专区不卡| 伊人精品久久久久7777| 久久精品亚洲精品国产欧美| 麻豆精品久久精品色综合| 国产一久久香蕉国产线看观看| 中文精品久久久久人妻不卡| 久久综合久久美利坚合众国| 综合网日日天干夜夜久久| 久久99精品久久久大学生| 2022年国产精品久久久久| 久久久无码精品亚洲日韩蜜臀浪潮|