HDOJ 1075
2024-09-22 07:01:12
字典树
9890974 | 2013-12-25 15:31:06 | Accepted | 1075 | 468MS | 59832K | 1342 B | G++ | 泽泽 |
#include<stdio.h>
#include<cstring>
#include<cstdlib>
struct node
{
node *next[];
int key;
char ans_s[];
}root;
void insert(char *str,char *s)
{
int len=strlen(str);
node *p=&root,*q;
for(int i=;i<len;i++)
{
int id=str[i]-'a';
if(p->next[id]==NULL)
{
q=(node *)malloc(sizeof(root));
q->key=;
for(int j=;j<;j++)
q->next[j]=NULL;
p->next[id]=q;
p=p->next[id];
}
else
p=p->next[id];
}
if(p->key!=-)
{
strcpy(p->ans_s,s);
p->key=-;
}
}
void find(char *str)
{
int len=strlen(str);
node *p=&root;
for(int i=;i<len;i++)
{
int id=str[i]-'a';
if(p->next[id]==NULL)
{
printf("%s",str);
return ;
}
else
{
p=p->next[id];
}
}
if(p->key==-)
printf("%s",p->ans_s);
else
printf("%s",str);
return; }
int main()
{
int i;
char s1[],s2[],s[];
for(i=;i<;i++)
root.next[i]=NULL;
scanf("%s",s1);
while(scanf("%s",s1)!=EOF&&strcmp(s1,"END")!=)
{
scanf("%s",s2);
insert(s2,s1);
}
scanf("%s",s1);
getchar();
while(gets(s)&&strcmp(s,"END")!=)
{
int k=,len=strlen(s);
for(i=;i<len;i++)
{
while(s[i]>='a'&&s[i]<='z')//满足是字母,wa了一次
{
s2[k++]=s[i++];
}
s2[k]='\0';
k=;
find(s2);
printf("%c",s[i]);
}
printf("\n");
} return ;
}
最新文章
- log4j 日志信息的引入(通用版)——解决项目运行过程中的日志信息
- XSLT
- HDU 3549 Flow Problem(最大流)
- centos安装g++
- 令人作呕的OpenSSL
- Jmeter实现MD5加密
- 《重构&mdash;&mdash;改善既有代码的设计》【PDF】下载
- HTTP 首部字段详细介绍
- 【bzoj3598】: [Scoi2014]方伯伯的商场之旅
- pytorch: 准备、训练和测试自己的图片数据
- 自然语言处理之jieba分词
- Emgu.CV 播放视频-本地文件/RTSP流
- scope 前缀开头的方法
- Python中str()和repr()函数的区别
- VS2012+openCV 2.4.8进行编译:VS2012 64位 使用OPENCV应用程序不能正常启动 (0xc000007b)怎么处理?
- Shell - 简明Shell入门12 - 定制输出(ColorOutput)
- Web服务器指纹识别工具httprint
- 2017 国庆湖南Day2
- Django ajax方法提交表单,及后端接受数据
- hdu 1712 (分组背包)
热门文章
- DOM(七)使用DOM控制表格
- Java数组的--遍历
- centos 6.5下安装mysql+nginx+redmine 3.1.0 笔记
- linux php配置ftp扩展
- 并行程序设计模式--Master-Worker模式
- struts2升级报ActionContextCleanUp<;<;is deprecated。Please use the new filters
- oracle-1
- Html-Css-设置DIV边框圆滑
- [NOIP2011] 提高组 洛谷P1315 观光公交
- TCP/IP详解 学习七