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

            啟發(fā):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)//比字典中多一個(gè) 
                    {
                        
            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)//比字典中少一個(gè) 
                    {
                        
            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) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 格式.輸入輸出.數(shù)據(jù)類型
            <2009年7月>
            2829301234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            友情鏈接

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            精品多毛少妇人妻AV免费久久| 国产精品久久久久乳精品爆| 国内精品伊人久久久久影院对白| 久久精品国产亚洲AV麻豆网站| 久久精品极品盛宴观看| 久久亚洲天堂| 久久精品国产日本波多野结衣| 久久久久亚洲AV成人网人人网站 | 久久久久久久国产免费看| 狠狠干狠狠久久| 97久久精品人人做人人爽| 激情综合色综合久久综合| 久久亚洲电影| 精品久久人人爽天天玩人人妻| 性欧美丰满熟妇XXXX性久久久| 久久综合给合久久国产免费| 国产综合久久久久久鬼色| 一本久久a久久精品综合夜夜 | 一本久久a久久精品综合夜夜| 91精品国产综合久久香蕉| 久久久精品人妻无码专区不卡 | 精品久久久久成人码免费动漫| 亚洲精品tv久久久久久久久| 久久天堂AV综合合色蜜桃网| 777米奇久久最新地址| 精品久久综合1区2区3区激情| 日韩精品无码久久一区二区三| 亚洲级αV无码毛片久久精品| 欧美久久综合性欧美| 奇米影视7777久久精品人人爽| 久久精品无码一区二区无码 | avtt天堂网久久精品| 久久久久人妻精品一区三寸蜜桃 | 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 思思久久99热只有频精品66| 亚洲精品乱码久久久久久中文字幕| 国产麻豆精品久久一二三| 久久综合视频网站| 国内精品久久国产大陆| 漂亮人妻被中出中文字幕久久| 91久久香蕉国产熟女线看|