POJ 1035 代码+具体的目光
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 代码+具体的目光的更多相关文章
- poj 1035 Spell checker(hash)
题目链接:http://poj.org/problem?id=1035 思路分析: 1.使用哈希表存储字典 2.对待查找的word在字典中查找,查找成功输出查找成功信息 3.若查找不成功,对word增 ...
- POJ 1035 Spell checker 字符串 难度:0
题目 http://poj.org/problem?id=1035 题意 字典匹配,单词表共有1e4个单词,单词长度小于15,需要对最多50个单词进行匹配.在匹配时,如果直接匹配可以找到待匹配串,则直 ...
- POJ 1035 Spell checker(串)
题目网址:http://poj.org/problem?id=1035 思路: 看到题目第一反应是用LCS ——最长公共子序列 来求解.因为给的字典比较多,最多有1w个,而LCS的算法时间复杂度是O( ...
- poj 1035
http://poj.org/problem?id=1035 poj的一道字符串的水题,不难,但就是细节问题我也wa了几次 题意就是给你一个字典,再给你一些字符,首先如果字典中有这个字符串,则直接输出 ...
- poj 1035 Spell checker(水题)
题目:http://poj.org/problem?id=1035 还是暴搜 #include <iostream> #include<cstdio> #include< ...
- 关于部分应用无法向POJ提交代码的解决方案
有个一年没做过题了,最近有骚年反映他们的VirtualJudge无法做POJ的题目,一直都是JudgeError状态. 于是登录到那个VJudge试了试,代码的确一直无法提交成功,他们的服务器发回50 ...
- poj 1035 Spell checker ( 字符串处理 )
Spell checker Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 16675 Accepted: 6087 De ...
- 【POJ 1035】Spell checker
题 题意 每个单词,如果字典里存在,输出”该单词 is correct“:如果字典里不存在,但是可以通过删除.添加.替换一个字母得到字典里存在的单词,那就输出“该单词:修正的单词”,并按字典里的顺序输 ...
- POJ 1035 Spell checker (模拟)
题目链接 Description You, as a member of a development team for a new spell checking program, are to wri ...
随机推荐
- xml在此生活
小编尾随学习的步伐.今天小编简要概述xml在此生活,xml她的百度百科这一解释:可扩展标记语言 (ExtensibleMarkup Language, XML).用于标记电子文件使其具有结构性的标记语 ...
- S2SH新手框架结构的准备工作只需要导入这些文件
实习北京最近一直在某公司.时间很冲突,总想着有事找东西坐,思想,做事先成套我吧 一套完整的东西想好主题,术去实现了,在学校尽管说是学了J2EE,可是确实没学到东西,Struts2+Hibernate不 ...
- CSDN帐号被盗尚未?
总是早上登录CSDN,STIL.总是让C货币. 但是今天除了发C币,还提示我有2篇博文被删除了,打开看了看,原来不是我发的. watermark/2/text/aHR0cDovL2Jsb2cuY3Nk ...
- Java的进程内缓存框架:EhCache (转)
EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. Ehcache缓存的特点: 1. 快速. 2. 简单. 3. 多种缓存 ...
- 依据Uri获得sd卡图片
<pre name="code" class="java">String mBigImage = URLEncoder.encode(mImageU ...
- R0-R37它是Arm 寄存器,那是,CPU内部。和GPIO注册所有外设。换句话说,要是arm的cpu,它包含了其他芯片公司将有R0-R37,和GPIO寄存器只有一个特定的芯片。
R0-R37它是Arm 寄存器.那是,CPU内部.和GPIO注册所有外设. 换句话说,要是arm的cpu,它包含了其他芯片公司将有R0-R37,和GPIO有. 版权声明:本文博主原创文章.博客,未经同 ...
- C#程序(含多个Dll)合并成一个Exe
把C#程序(含多个Dll)合并成一个Exe的超简单方法 开发程序的时候经常会引用一些第三方的DLL,然后编译生成的exe文件就不能脱离这些DLL独立运行了. 但是,很多时候我们本想开发一款只需要一 ...
- boost准模板库scoped_ptr指针的使用以及auto_ptr智能指针的对照
首先我们看看scoped_ptr的基本使用,包括了swap(),get(),reset()的使用,重要的提醒是作用域结束的时候会自己主动析构,无需手动的释放资源: #include<boost/ ...
- PS 过滤器——运动模糊
%%%%% motion blur clc; clear all; close all; Image=imread('4.jpg'); Image=double(Image); theta=pi/4 ...
- build path--use as source folder 应用
今天eclipse.当打算run随着main功能class时间,出现editor does not contain a main type该错误框. baidu了一下,迅速解决这个问题:原来这个cla ...