POJ1035_Spell checker_KEY
一道暴力可以过的水题。(直接暴力模拟的那种)
但是我打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的更多相关文章
随机推荐
- [Python 网络编程] makefile (三)
socket.makefile(mode ='r',buffering = None,*,encoding = None,errors = None,newline = None )返回一个与套接字相 ...
- 【Javascript-基础-Date】本地时间与UTC(GMT)时间转换
UTC(GMT) 整个地球分为二十四时区,每个时区都有自己的本地时间.在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinat ...
- java SSM 框架 多数据源 代码生成器 websocket即时通讯 shiro redis 后台框架源码
A 调用摄像头拍照,自定义裁剪编辑头像 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统]B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单; 技 ...
- Angular7教程-06-页面与数据交互
1. 本节说明 本节的内容会在上期搭建的框架基础上进行数据的填充,顺便回顾之前介绍过的插值表达式,属性绑定等知识,本节的数据只是在组件中模拟数据,后面会有专门的章节讲解如何从服务器获取数据. 2. 轮 ...
- 1002. A+B for Polynomials(25)—PAT 甲级
This time,you are supposed to find A+B where A+B are two polynomials. Input Each input file contains ...
- C++程序设计入门(上) 函数学习
局部变量和全局变量的访问: 全局变量的作用域时全局,局部变量的作用域是局部,若全局和局部的变量名相同的话,局部变量的改变不会引起全局变量的改变#include<iostream> int ...
- Windows10系统在VMware中安装CentOS7操作系统并实现图形化用户界面Gnome
由于操作系统课程需要,我尝试在windows10环境下安装linux虚拟机,最终采用centOS7和Gnome图形用户界面,在安装和使用过程中出现一些问题,在这里将其记录下来,以便后续查阅. 第一部分 ...
- flAbsPath on /var/lib/dpkg/status failed 解决 Cydia 红字
越狱之后抹掉所有数据,然后再使用 doubleH3lix 越狱成功后,打开 Cydia 会提示如下错误: flAbsPath on /var/lib/dpkg/status failed - real ...
- mysql如何批量删除数据表
-- 注意这里的`是英文输入法状态下,主键盘数字1的左边的键.drop table `user`,`c_class`;
- 一个数据仓库时代开始--Hive
一.什么是 Apache Hive? Apache Hive 是一个基于 Hadoop Haused 构建的开源数据仓库系统,我们使用它来查询和分析存储在 Hadoop 文件中的大型数据集.此外,通过 ...