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的更多相关文章
随机推荐
- 为什么 Category 不能增加成员变量-nonfragile
三.既然是 non-fragile ivars,为什么 Category 不能增加成员变量? 看过一些资料,理由并不是很让人信服.我觉得并不是做不到,只是现在没有做,现在不支持.我在 Opti ...
- BZOJ4008:[HNOI2015]亚瑟王(DP,概率期望)
Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂亮.众所周知,亚瑟王是一个 ...
- PHP------TP命名空间
命名空间: 相当于一个虚拟的目录 正常管理文件使用文件夹--物理区分 TP框架的初始命名空间是:ThinkPHP\Library 在TP框架下命名空间里面使用\代表的是初始命名空间(ThinkPHP\ ...
- mysql服务器参数
mysql服务器参数: 配置是从上往下读取,同一个参数项,后边的配置项会覆盖前边的配置项 mysql获取配置信息路径: 命令行参数 mysqld_safe --datadir=/data/sq ...
- Java 数据库操作oracle增删改查,通用封装基于hashmap
pt1:首先安装oracle连接驱动 下载地址:https://pan.baidu.com/s/1jW_ofgU4eJmAn7Y2J5B46A 密码:epkz 1.将ojdbc6.jar导入项目中 ...
- javascript中获取dom元素高度和宽度
javascript中获取dom元素高度和宽度的方法如下: 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网 ...
- VS Code 常用插件列表
插件列表 Auto Close Tag 自动闭合HTML标签 Auto Rename Tag 修改HTML标签时,自动修改匹配的标签 Bookmarks 添加行书签 Can I Use HTML5.C ...
- [Oracle]Oracle良性SQL建议
(1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处 ...
- Caused by: java.lang.ClassNotFoundException: org.springframework.boot.bind.RelaxedPropertyResolver
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.bind.RelaxedPropertyResolver 这 ...
- 在express中HMR(合并express和webpack-dev-server)
在学习react的时候,经常用create-react-app来创建web应用,然而写到后面总有连自己服务器和数据库的需求,create-react-app创建的是一个webpack-dev-serv ...