Spell checker

Time Limit: 2000MS Memory Limit: 65536K

Total Submissions: 19319 Accepted: 7060

Description



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



The first part of the input file 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 file 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 file (words from the dictionary and words to be checked) consist only of small alphabetic characters and each one contains 15 characters at most.


Output



Write to the output file exactly one line for every checked word in the order of their appearance in the second part of the input file. If the word is correct (i.e. it exists in the dictionary) write the message: " 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.

Sample Input



i

is

has

have

be

my

more

contest

me

too

if

award

#

me

aware

m

contest

hav

oo

or

i

fi

mre

#

Sample Output



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

Source

Northeastern Europe 1998

<span style="color:#000099;">/******************************************
author : Grant Yuan
time : 2014/10/3 0:38
algorithm : 暴力
source : POJ 1035
*******************************************/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<queue>
#include<string> using namespace std;
const int MAX=10007;
struct word
{
char str[15];
int len;
}; word s[MAX];
int n;
queue<int> ans;
inline bool slove1(word s1,word s2)//推断两个字符串是否相等
{
if(strcmp(s1.str,s2.str)==0) return 1;
return 0;
}
inline bool slove2(word s1,word s2)//推断能否够由一个字符串添加或者降低一个字符得到还有一个字符串
{
int l1=s1.len,l2=s2.len;
int i,j;
bool ans=1;
for(i=0;i<l1&&i<l2;i++)
{
if(s1.str[i]!=s2.str[i]) ans=0;
}
if(ans) return 1;
for(i=0,j=0;i<l1&&j<l2;)
{
if(s1.str[i]==s2.str[j]){ i++;j++;}
else i++;
}
if(i==l1&&j==l2) return 1;
return 0;
}
inline bool slove3(word s1,word s2)//是否两个字符串仅仅有一个字符不想等
{
int ans=0;
int l=s1.len;
for(int i=0;i<l;i++)
{
if(s1.str[i]!=s2.str[i]) ans++;
}
if(ans==1) return 1;
return 0;
}
int main()
{
while(!ans.empty()) ans.pop();
word s1;
int n=0;
while(scanf(" %s",s1.str)!=EOF){
if(strcmp(s1.str,"#")==0) break;
strcpy(s[++n].str,s1.str);
s[n].len=strlen(s1.str);
}
while(scanf(" %s",s1.str)!=EOF){
while(!ans.empty()) ans.pop();
if(strcmp(s1.str,"#")==0) break;
bool flag=1;
s1.len=strlen(s1.str);
for(int i=1;i<=n;i++)
{
int l2=s[i].len,l1=s1.len;
bool ans1=0;
if(l1==l2){
if(slove1(s1,s[i])) ans1=1;
}
if(ans1){flag=0;printf("%s is correct\n",s1.str);break;}
if(l1==l2){
if(slove3(s1,s[i])) ans.push(i);
}
if(l1-l2==1){
if(slove2(s1,s[i])) ans.push(i);
}
if(l2-l1==1){
if(slove2(s[i],s1)) ans.push(i);
}
}
if(flag){
printf("%s:",s1.str);
while(!ans.empty()){printf(" %s",s[ans.front()].str);ans.pop();}
printf("\n");
}
}
return 0;
}
</span>

版权声明:本文博主原创文章,博客,未经同意,不得转载。

POJ 1035 代码+具体的目光的更多相关文章

  1. poj 1035 Spell checker(hash)

    题目链接:http://poj.org/problem?id=1035 思路分析: 1.使用哈希表存储字典 2.对待查找的word在字典中查找,查找成功输出查找成功信息 3.若查找不成功,对word增 ...

  2. POJ 1035 Spell checker 字符串 难度:0

    题目 http://poj.org/problem?id=1035 题意 字典匹配,单词表共有1e4个单词,单词长度小于15,需要对最多50个单词进行匹配.在匹配时,如果直接匹配可以找到待匹配串,则直 ...

  3. POJ 1035 Spell checker(串)

    题目网址:http://poj.org/problem?id=1035 思路: 看到题目第一反应是用LCS ——最长公共子序列 来求解.因为给的字典比较多,最多有1w个,而LCS的算法时间复杂度是O( ...

  4. poj 1035

    http://poj.org/problem?id=1035 poj的一道字符串的水题,不难,但就是细节问题我也wa了几次 题意就是给你一个字典,再给你一些字符,首先如果字典中有这个字符串,则直接输出 ...

  5. poj 1035 Spell checker(水题)

    题目:http://poj.org/problem?id=1035 还是暴搜 #include <iostream> #include<cstdio> #include< ...

  6. 关于部分应用无法向POJ提交代码的解决方案

    有个一年没做过题了,最近有骚年反映他们的VirtualJudge无法做POJ的题目,一直都是JudgeError状态. 于是登录到那个VJudge试了试,代码的确一直无法提交成功,他们的服务器发回50 ...

  7. poj 1035 Spell checker ( 字符串处理 )

    Spell checker Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16675   Accepted: 6087 De ...

  8. 【POJ 1035】Spell checker

    题 题意 每个单词,如果字典里存在,输出”该单词 is correct“:如果字典里不存在,但是可以通过删除.添加.替换一个字母得到字典里存在的单词,那就输出“该单词:修正的单词”,并按字典里的顺序输 ...

  9. POJ 1035 Spell checker (模拟)

    题目链接 Description You, as a member of a development team for a new spell checking program, are to wri ...

随机推荐

  1. CSS 之 光进入光

    一个.概念 css,层叠样式表(英语:Cascading Style Sheets.简写CSS).又称串样式列表.层次结构式样式表文件,一 种用来为结构化文档(如HTML文档或XML应用)加入样式(字 ...

  2. Swing开发界面时的一个bug复盘

    问题:QA突然发个截图说一个Dialog上展示的东西变形了 分析:不理解,什么也没做,怎么会变形,刚刚我用的时候还正常.看看代码,的确什么也没更改:在本地测一下,也没有问题:baidu,bing,st ...

  3. Java程序猿JavaScript学习笔记(4——关闭/getter/setter)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

  4. 一起学习android图像缩放资源 (27)

    效果图: 在平时载入图片时,我会使用SetImageBitmap.setImageResource.BitmapFactory.decodeResource来设置一张图 片通过以上方法来设置图片时.会 ...

  5. Eamcs ditaa基于字符图形产生的图像上

    ditta和artist mode这是一个好兄弟.artist mode帮我创建一个字符模式速度,ditta是java计划,字符图形可被读取,并生成图像. ditta网站:http://ditaa.s ...

  6. OpenCV300 CMake生成project在项目过程中的问题

    2015年6一个月4日本.OpenCV官网上面给出了最新版本号OpenCV.这是:3.0.0版本号,http://opencv.org/ 使用CMake它产生VS2010project流程.我遇到了一 ...

  7. js实现鼠标拖拽div-------Day44

    假设去问这样一个问题"你认为鼠标操作简单,还是键盘操作简单",相信会有多数人都会回答鼠标吧,毕竟键盘button那么多,假设手小了或者手法不规范了,太easy出问题了,也对操作的速 ...

  8. swift类名称显示变量

    <span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 51); font-family: Aria ...

  9. Run Book Automation - RBA系统介绍

    什么是RBA系统? 介绍这个系统之前, 先介绍一下开发这个系统的公司. BMC BMC软件公司是全球率先的业务服务管理解决方式的开发及供应商,现为全球第六大独立软件公司. 通过帮助用户主动提升服务.降 ...

  10. DDD领域驱动设计仓储Repository

    DDD领域驱动设计初探(二):仓储Repository(上) 前言:上篇介绍了DDD设计Demo里面的聚合划分以及实体和聚合根的设计,这章继续来说说DDD里面最具争议的话题之一的仓储Repositor ...