poj 1035 Spell checker

#include <iostream>        //水题
#include<string>
#include
<vector>
#include
<algorithm>
using namespace std;
int main()
{
vector
<string> dic;
string str;
while(cin>>str&&str!="#")
{
dic.push_back(str);
}
while(cin>>str&&str!="#")
{
if(find(dic.begin(),dic.end(),str)!=dic.end())
cout
<<str<<" is correct\n";
else
{
cout
<<str<<": ";
for(int i=0;i<dic.size();++i)
{
string dic_str=dic[i];
if(str.size()==dic_str.size())
{
int f=0;
for(int j=0;j<str.size();++j)
if(str[j]!=dic_str[j])
{
f
++;
if(f==2)
break;
}
if(f==1)
cout
<<dic_str<<" ";
}
else if(str.size()==dic_str.size()-1)
{
int f=0,j,k;
for(j=0;j<str.size()&&f<2;)
{
for(k=0;k<dic_str.size();k++)
{
if(str[j]==dic_str[k])
j
++;
else
f
++;
if(f==2)
break;
}
if(k==dic_str.size())
break;
}
if(f==1)
cout
<<dic_str<<" ";

}
else if(str.size()==dic_str.size()+1)
{
int f=0,j,k;
for(j=0;j<dic_str.size()&&f<2;)
{
for(k=0;k<str.size();k++)
{
if(dic_str[j]==str[k])
j
++;
else
f
++;
if(f==2)
break;
}
if(k==str.size())
break;
}
if(f==1)
cout
<<dic_str<<" ";
}
}
cout
<<endl;
}
}
return 0;
}

  

posted on 2011-07-22 16:56  sysu_mjc  阅读(119)  评论(0编辑  收藏  举报

导航