Spell checker
Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 18418   Accepted: 6759

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

解题报告
怕超时写哈希。结果还真超时了。改写暴力居然过了。。。

C++只是,G++过。。

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath> using namespace std;
struct node
{
char s[20];
int t;
} dic[10010];
int ctt(char *str,char *ch)
{
int l1=strlen(str),l2=strlen(ch);
int i,t=0;
if(l1<l2)
{
for(i=0;i<l2;i++)
{
if(str[t]==ch[i])
t++;
if(t==l1)
return 1;
}
return 0;
}
else if(l1>l2)
{
for(i=0;i<l1;i++)
{
if(str[i]==ch[t])
t++;
if(t==l2)
return 1;
}
return 0;
}
else
{
for(i=0;i<l1;i++)
{
if(str[i]==ch[i])
t++;
}
if(t==l1-1)
return 1;
else
return 0;
}
}
int main()
{
int n=0,f=0,i;
char str[20];
while(~scanf("%s",str))
{
if(str[0]=='#')break;
strcpy(dic[n].s,str);
dic[n++].t=n;
}
//<<ctt("aware","award");
while(~scanf("%s",str))
{
f=0;
if(str[0]=='#')break;
for(i=0; i<n; i++)
{
if(strcmp(str,dic[i].s)==0)
{
printf("%s is correct",str);
f=1;
break;
}
}
if(!f)
{
printf("%s:",str);
int l=strlen(str);
for(i=0; i<n; i++)
{
if(strlen(dic[i].s)-l==1||strlen(dic[i].s)-l==-1||strlen(dic[i].s)-l==0)
{
if(ctt(str,dic[i].s))
printf(" %s");
}
}
}
printf("\n");
}
}

POJ训练计划1035_Spell checker(串处理/暴力)的更多相关文章

  1. POJ训练计划3080_Blue Jeans(串处理/暴力)

    Blue Jeans Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11542   Accepted: 4962 Descr ...

  2. POJ 1035 Spell checker(串)

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

  3. POJ训练计划

    POJ训练计划 Step1-500题 UVaOJ+算法竞赛入门经典+挑战编程+USACO 请见:http://acm.sdut.edu.cn/bbs/read.php?tid=5321 一.POJ训练 ...

  4. POJ 3294 n个串中至少一半的串共享的最长公共子串

    Life Forms Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 12484   Accepted: 3502 Descr ...

  5. POJ - 3080 Blue Jeans 【KMP+暴力】(最大公共字串)

    <题目链接> 题目大意: 就是求k个长度为60的字符串的最长连续公共子串,2<=k<=10 限制条件: 1.  最长公共串长度小于3输出   no significant co ...

  6. POJ 1159 回文串-LCS

    题目链接:http://poj.org/problem?id=1159 题意:给定一个长度为N的字符串.问你最少要添加多少个字符才能使它变成回文串. 思路:最少要添加的字符个数=原串长度-原串最长回文 ...

  7. POJ 3974 回文串-Manacher

    题目链接:http://poj.org/problem?id=3974 题意:求出给定字符串的最长回文串长度. 思路:裸的Manacher模板题. #include<iostream> # ...

  8. poj 1035 Spell checker

    Spell checker Time Limit: 2000 MS Memory Limit: 65536 KB 64-bit integer IO format: %I64d , %I64u   J ...

  9. poj 2187 Beauty Contest (凸包暴力求最远点对+旋转卡壳)

    链接:http://poj.org/problem?id=2187 Description Bessie, Farmer John's prize cow, has just won first pl ...

随机推荐

  1. 基于IAR移植sdk12.2.0建立nrf52832的工程———GPIO

    工程伊始,需要在sdk包中拷贝三个重要的文件,blinky_iar_nRF5x.icf,iar_startup_nrf52.s,system_nrf52.c. 工程目录建立: 1.建立bsp文件,包括 ...

  2. Exchange 正版化 授权

    网友说法: Exchange服务器版其实价格不高,企业版也就是几万左右,贵的是客户端授权,一个客户端授权大概要300多.但是,但是,中国企业买Exchange客户端一般都是可以按比例买的,比如10%- ...

  3. 【LeetCode】Maximum Subarray(最大子序和)

    这道题是LeetCode里的第53道题. 题目描述: 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1 ...

  4. MapReduce和Hadoop流

    MapReduce:分布式计算的框架 MapReduce是一个软件框架,可以将单个计算作业分配给多台计算机执行. MapReduce在大量节点组成的集群上运行.它的工作流程是:单个作业被分成很多小份, ...

  5. 【Luogu】P2340奶牛会展

    题目链接 突发奇想可以用f[i]表示智商和为i的时候情商最大是多少.这样就变成了一个背包问题. 最后更新答案的时候从0到最大背包容量遍历,最后答案是最大的i+f[i]; 但是虽然答案只能从0到m里选, ...

  6. GT考试 BZOJ 1009

    GT考试 [问题描述] 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字. 他的不吉利数学A1A2...Am(0< ...

  7. [Python] 'unicode' object is not callable

    在Python中,出现'unicode' object is not callable的错误一般是把字符串当做函数使用了.

  8. Python入门--2--继续学习

    继续学习小甲鱼 一.python比较操作符 == :判断左边是否等于右边 != : 判断左边是否不能右边 二. if while判断语句 栗子: temp = input ("sha shu ...

  9. docker镜像mac下保存路径

    mac下docker的镜像保存位置: /Users/{YourUserName}/Library/Containers/com.docker.docker/Data/com.docker.driver ...

  10. vue之监听事件

    一.v-on 可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码. 简写形式  用@代替 v-on: <button v-on:click="co ...