题目传送门

一道暴力可以过的水题。(直接暴力模拟的那种)

但是我打Trie练练模板,但是TMD因为数组开太小卡了好久。

code:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>
#include <map>
#include <algorithm>
using namespace std; struct trie{
int tr[][],cnt,v[];
trie(){memset(tr,,sizeof tr),memset(v,,sizeof v),cnt=;}
void add(string a)
{
int now=,len=a.size();
for(int i=;i<len;i++){
if(!tr[now][a[i]-'a'])tr[now][a[i]-'a']=++cnt,now=cnt;
else now=tr[now][a[i]-'a'];
}
v[now]=;
} int query(string a)
{
int now=,len=a.size(),o=;
for(int i=;i<len;i++){
if(!tr[now][a[i]-'a'])return ;
now=tr[now][a[i]-'a'];
}
return v[now];
}
}M; map<string,int>MP;
struct node{
string f;int id;
node(){f="";id=;}
}as[];
string S,ks,t;
int tot=;
inline int cmp(node x,node y){return x.id<y.id;}
int main()
{
// freopen("x.txt","r",stdin);
t="";
int ide=;
while(cin>>S,S[]!='#'){if(MP[S])continue;M.add(S);MP[S]=++ide;}
while(cin>>S,S[]!='#'){
if(M.query(S)){
cout<<S;cout<<" is correct";puts("");
}
else{
tot=;
cout<<S<<':';
int len=S.size();
for(int i=;i<len;i++){
for(int j=;j<;j++){
t=S[i];
ks=j+'a';
S.erase(i,),S.insert(i,ks);
if(M.query(S))
as[++tot].f=S,as[tot].id=MP[S];
S.erase(i,),S.insert(i,t);
}
}
for(int i=;i<=len;i++){
for(int j=;j<;j++){
ks=j+'a';
S.insert(i,ks);
if(M.query(S))
as[++tot].f=S,as[tot].id=MP[S];
S.erase(i,);
}
}
for(int i=;i<len;i++){
t=S[i];
S.erase(i,);
if(M.query(S))
as[++tot].f=S,as[tot].id=MP[S];
S.insert(i,t);
}
sort(as+,as+tot+,cmp);
for(int i=;i<=tot;i++)
if(as[i].f!=as[i-].f)
cout<<' '<<as[i].f;
puts("");
}
}
}

POJ1035_Spell checker_KEY的更多相关文章

随机推荐

  1. JavaScript事件的委派与事件的绑定

    事件的委派 在很多需求中,通常元素是动态创建添加到一个父元素中的,这时候我们点击新增的元素是没有反应的 <script type="text/javascript"> ...

  2. x-frame-options、iframe与iframe的一些操作

    iframe的子操作父窗口,父操作子窗口: test.php: <!DOCTYPE html> <html> <head> <title>test< ...

  3. Python 模块化 自定义模块 (四)

    自定义模块 一个.py文件就是一个模块 创建以下三个文件: 运行test.py ,查看运行结果. #test.py print("this is test module") imp ...

  4. [转].NET设计模式系列文章

    最初写探索设计模式系列的时候,我只是想把它作为自己学习设计模式的读书笔记来写,可是写到今天,设计模式带给我的震撼,以及许多初学者朋友的热心支持,让我下定决心要把这个系列写完写好,那怕花上再多的时间也无 ...

  5. PAT——1073. 多选题常见计分法(20)

    批改多选题是比较麻烦的事情,有很多不同的计分方法.有一种最常见的计分方法是:如果考生选择了部分正确选项,并且没有选择任何错误选项,则得到50%分数:如果考生选择了任何一个错误的选项,则不能得分.本题就 ...

  6. HDU 1058(打表)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1058 Humble Numbers Time Limit: 2000/1000 MS (Java/O ...

  7. JAVA并发(一)

    java并发的一系列框架和技术主要是由java.util.concurrent 包所提供.包下的所有类可以分为如下几大类: locks部分:显式锁(互斥锁和速写锁)相关: atomic部分:原子变量类 ...

  8. 公司内网静态IP,外网无线动态IP 同时上网,不必再切换网卡啦 route 命令给你搞定。

    一: 公司内网:192.168.55.101   255.255.255.0    192.168.55.1  网关 外网:192.168.20.101  255.255.255.0   192.16 ...

  9. 编译安装 Hue

    # 安装前的准备 useradd huedev wget https://github.com/cloudera/hue/archive/release-4.2.0.tar.gz -O /home/h ...

  10. Bulk Rename Utility 3.0 + x64 中文汉化版

    Bulk Rename Utility 3.0 + x64 中文汉化版由大眼仔旭(www.dayanzai.me)汉化发布.当发现做一件事情,原本用工具或软件进行批量处理也能达到相同效果,可却花了数倍 ...