zoj 2040 Spell Checker

zoj 2040 Spell Checker,第1张

zoj 2040 Spell Checker
#include<iostream>#include<set>#include<string.h>#include<stdlib.h>#include<algorithm>#include<stdio.h>using namespace std;set<string> tab;void search(string &s){    cout<<s<<":";    set<string> v;    string ns;    int i, j, len;    for(i=0, len=s.length(); i<len; i++){        ns = s.substr(0,i) + s.substr(i+1, len-i-1);         if(tab.find(ns) != tab.end()){ v.insert(ns);        }    }    for(i=0; i<len; i++){        ns = s;        for(j='a'; j<= 'z'; ++j){ if(j == s[i]) continue; ns[i] = j; if(tab.find(ns) != tab.end()){     v.insert(ns); }        }    }    for(i=0; i<=len; i++){        string tmp = "a";        for(tmp[0]='a'; tmp[0]<='z'; ++tmp[0]){ ns = s.substr(0, i) + tmp + s.substr(i, len - i); if(tab.find(ns) != tab.end() ){     v.insert(ns); }        }    }    for(set<string>::iterator is=v.begin(); is!=v.end(); ++is){        cout<<" "<<*is;    }    cout<<"n";}void fun(){    string s;    cin>>s;    while(s!="#"){        if(tab.find(s)!=tab.end()){ cout<<s<<" is correctn";        } else{ search(s);        }        cin>>s;    }}void readIn(){    string s;    tab.clear();    cin>>s;    while(s!="#"){        tab.insert(s);        cin>>s;    }}int main(){    int tst;    scanf("%d", &tst);    while(tst--){        readIn();        fun();        if(tst) cout<<"n";    }    return 0;}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4925931.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-12
下一篇2022-11-13

发表评论

登录后才能评论

评论列表(0条)

    保存