hdu1247(Hat’s Words)
我以为像a、aa这样的输入应该是没有输出的,结果还是要输出aa。
建树的时候就是常规建树,不过查找的时候要做一些变形:对于一个单词,从第一位检查有没有单词是它的前缀,如果有的话,再去检查它的后半部分是不是一个独立的单词,要满足这两次查找才能输出。
题意:给一些单词(以字典序输入),找出那些可以分成另外的两个单词的单词,以字典序输出;
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
typedef struct Node
{
int flag;
struct Node *next[26];
}Node,*Tree;
char a[50001][30];
void Creat(Tree &T)
{
T=(Node *)malloc(sizeof(Node));
T->flag=0;
for(int i=0;i<26;i++)
{
T->next[i]=NULL;
}
}
void insert(Tree &T,char *s)
{
Tree p=T;
int t;
int l=strlen(s);
for(int i=0;i<l;i++)
{
t=s[i]-'a';
if(p->next[t]==NULL)
{
Creat(p->next[t]);
}
p=p->next[t];
}
p->flag=1;
}
int search(Tree T,char *s)
{
int t;
Tree p=T;
int l=strlen(s);
for(int i=0;i<l;i++)
{
t=s[i]-'a';
if(p->next[t]==NULL)
return 0;
p=p->next[t];
}
if(p->flag) return 1;
else return 0;
}
void D(Tree p)
{
for(int i=0;i<26;i++)
{
if(p->next[i]!=NULL)
D(p->next[i]);
}
free(p);
}
int main()
{
char s1[30];
char s2[30];
Tree T;
int kk=0;
Creat(T);
while(gets(a[kk])&&strlen(a[kk]))
{
insert(T,a[kk]);
kk++;
}
int i,j;
for(i=0;i<kk;i++)
{
int l=strlen(a[i]);
for(j=0;j<l;j++)
{
memset(s1,'\0',sizeof(s1));
memset(s2,'\0',sizeof(s2));
int kkk=0;
int jjj=0;
for(int kk=0;kk<=j;kk++)
s1[kkk++]=a[i][kk];
for(int jj=j+1;jj<l;jj++)
{
s2[jjj++]=a[i][jj];
}
int qq=search(T,s1);
int ww=search(T,s2);
if(qq&&ww)
{
printf("%s\n",a[i]);
break;
}
}
}
D(T);
return 0;
}
转载于:https://www.cnblogs.com/zhangmingcheng/p/3808446.html
hdu1247(Hat’s Words)相关推荐
- hdu1247 Hat’s Words
地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=1247 题目: Hat's Words Time Limit: 2000/1000 MS (Ja ...
- hdu1247 Hat’s Words
Hat's Words Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- 题目梳理(一)(2019.07.06~2019.07.20)
一.字典树类型 A HihoCoder1014 Trie树(已做) 题目链接 https://hihocoder.com/problemset/problem/1014 B HDU12 ...
- HDU1247 字典树 Hat’s Words(Tire Tree)
Hat's Words Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- Hat’s Words(HDU-1247)
Problem Description A hat's word is a word in the dictionary that is the concatenation of exactly tw ...
- 【Trie】【HDU1247】【Hat’s Wordsfd2】
题目大意: hat's word 的定义是字典中 恰好由另外两个单词连接起来的单词 给你一本字典,问有多少个hat's word,(字典按字典序给出) 单词数50000.. 初步思路: 单词分为前缀单 ...
- Hat’s Words(字典树)
Hat's Words Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- Red Hat Linux 安装教程
一.下载链接 链接:https://pan.baidu.com/s/1JShQmOrgGG5_uaqPUuaHLg 提取码:ture 二.安装步骤 1.打开虚拟机,单击"创建新的虚拟机&q ...
- 在Red Hat Linux5下构建LAMP网站服务平台之MySQL、PHP的安装与配置
在Red Hat Linux5下构建LAMP网站服务平台之MySQL.PHP的安装与配置 2010-09-09 16:40:49 标签:PHP Linux mysql RedHat [推送到技术圈] ...
最新文章
- Android Camera设置setPreviewCallback实现onPreviewFrame接口实时截取每一帧视频流数据
- OpenCV中图像显示窗口函数namedWindow()详解
- 实验八 接口与实现接口的类
- 数列分块入门(套题)(loj6277,loj6278,loj6279,loj6280,loj6281,loj6282,loj6283,loj6284,loj6285)
- ​KDD 2019 | 用户视角看世界:腾讯提出ConcepT概念挖掘系统,助力推荐搜索
- 一、【用django2.0来开发】 环境部署和初始化项目
- 电脑手写输入法_百度输入法“手写输入”为什么不是老年人的专利?AI的进步...
- 微博抽奖贴为什么到时间了不开奖_热搜第一!微博闹剧,锦鲤“信小呆”被这样处罚...
- IDEA - 解决“idea 环境:junit:4.11 测试 mybatis 代码,无法导入 org.junit.Test 包”问题
- [在Windows上使用Unix工具]MKS
- 手撸一个 Router 框架(上):熟悉 APT
- [译] Commit 提交指南
- 遗传算法 matlab实现 多维变量 二进制编码
- 锂电池充电芯片,30款设计免费开源
- 网页中视频在线播放脚本
- 常见的信息收集工具和手段
- Ecshop 表结构 字段说明
- 一个Dom绑定多个事件
- java面向过程外卖订餐系统 完整版
- 关于字符集(彻底搞清楚一个中文占几个字节?)
热门文章
- WCF学习笔记之序列化
- java dll 乱码_java调用c++ dll出现中文乱码 | 学步园
- tensorflow下载
- 服务器设备性能说明,OMC服务器硬件性能和配置说明.doc
- python修改列表中字典内的值_python修改字典内key对应值的方法
- 批量添加PDF帐号目录
- 产品认知:真正厉害的产品经理,都是“本质思维”的高手
- python协程池操作mysql_python_协程方式操作数据库
- 三态门三个状态vhdl_温故知新,高阻态和三态门
- 现在抖音这么火,那么你知道如何用CSS实现抖音字体?