题意:

     给你一些串,问你哪些串是由其他两个串连接成的。

思路: 

      我用了两种方法,一个是hash,hash的时候用map实现的,第二种方法是字典树,字典树我们枚举每个一字符串,查找他的每一位,如果当前这一位是某个单词的最后一个字母,那么就重新跑到树的根节点,继续搜,搜到最后一个字母的时候,如果当前的这个字母是某个单词的最后一个那么就输出当前这个,还有就是注意一点,如果找到答案就直接break,不然后可能输出重复的,因为当前这个字符串可能被很多组合满足,还有就是不知道题目中有没有这样的数据
ab abab,这样不知道是否要输出abab,总之不用管就AC了,估计就是没有,要不就是题目说了我没注意。


字典树

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

typedef struct
Tree
{

Tree *next[26];
int
mk;
}
Tree; Tree root; char str[50005][100]; void Buid_Tree(char *str)
{
int
len = strlen(str);
Tree *p = &root ,*q;
for(int
i = 0 ;i < len ;i ++)
{
int
id = str[i] - 'a';
if(
p -> next[id] == NULL)
{

q = (Tree *) malloc(sizeof(Tree));
q -> mk = 0;
for(int
j = 0 ;j < 26 ;j ++)
q -> next[j] = NULL;
p -> next[id] = q;
p = p -> next[id];
}
else
p = p -> next[id];
}

p -> mk = 1;
} void
solve(char *str)
{
int
len = strlen(str);
Tree *p = &root;
for(int
i = 0 ;i < len ;i ++)
{
int
id = str[i] - 'a';
p = p -> next[id];
if(
p == NULL) break;
if(
p -> mk)
{

Tree *pp = &root;
int
mkk = 0;
for(int
j = i + 1 ;j < len && !mkk;j ++)
{
int
idd = str[j] - 'a';
pp = pp -> next[idd];
if(
pp == NULL) mkk = 1;
}
if(!
mkk && pp -> mk)
{

printf("%s\n" ,str);
break;
}
}
}
}
int main ()
{
for(int
i = 0 ;i < 26 ;i ++)
root.next[i] = NULL;
int
n = 0;
while(~
scanf("%s" ,str[++n]))
{

Buid_Tree(str[n]);
}
for(int
i = 1 ;i <= n ;i ++)
solve(str[i]);
return
0;
}
hash


#include<iostream>
#include<map>
#include<string>

using namespace
std; string str[55000];
map<string ,int>hash; int main ()
{
int
n = 0 ,i;
hash.clear();
while(
cin >> str[++n])
{

hash[str[n]] = 1;
}
for(
i = 1 ;i <= n ;i ++)
{
int
len = str[i].size();
for(int
k = 1 ;k < len ;k ++)
{

string s1(str[i] ,0 ,k);
string s2(str[i] ,k ,len);
if(
hash[s1] && hash[s2])
{

cout<<str[i]<<endl;
break;
}
}
}

//getchar();getchar();
return 0;
}



hdu1247 字典树或者hash的更多相关文章

  1. hdu1247 字典树

    开始以为枚举会超时,因为有50000的词.后来试了一发就过了.哈哈.枚举没一个单词,将单词拆为2半,如果2半都出现过,那就是要求的. #include<stdio.h> #include& ...

  2. hdu1247-Hat’s Words-(字典树)

    http://acm.hdu.edu.cn/showproblem.php?pid=1247 题意:给出一堆单词,求哪些单词是其中某两个单词拼接起来的. 题解:用字典树存储所有的单词,标记结束点,再次 ...

  3. hdu2482 字典树+spfa

    题意:       给你一个地图,地图上有公交站点和路线,问你从起点到终点至少要换多少次公交路线. 思路:       首先上面的题意说的和笼统,没说详细是因为这个题目叙述的很多,描述起来麻烦, 下面 ...

  4. hdu1247(字典树+枚举)

    Hat's Words(hdu1247) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...

  5. poj 2503 Babelfish(Map、Hash、字典树)

    题目链接:http://poj.org/bbs?problem_id=2503 思路分析: 题目数据数据量为10^5, 为查找问题,使用Hash或Map等查找树可以解决,也可以使用字典树查找. 代码( ...

  6. Colored Sticks POJ - 2513 并查集+欧拉通路+字典树hash

    题意:给出很多很多很多很多个棒子 左右各有颜色(给出的是单词) 相同颜色的可以接在一起,问是否存在一种 方法可以使得所以棒子连在一起 思路:就是一个判欧拉通路的题目,欧拉通路存在:没奇度顶点   或者 ...

  7. 字符串hash与字典树

    title: 字符串hash与字典树 date: 2018-08-01 22:05:29 tags: acm 算法 字符串 概述 这篇主要是关于字符串里的 字符串hash 和 字符串字典树,,两个都是 ...

  8. hash(2018年CSUST省赛选拔赛第一场B题+hash+字典树)

    题目链接:http://csustacm.com:4803/problem/1006 题目: 思路:正如题目一样,本题是一个hash,比赛的时候用的字典树,但是不知道为什么一直RE(听学长说要动态开点 ...

  9. POJ 2503 Babelfish(map,字典树,快排+二分,hash)

    题意:先构造一个词典,然后输入外文单词,输出相应的英语单词. 这道题有4种方法可以做: 1.map 2.字典树 3.快排+二分 4.hash表 参考博客:[解题报告]POJ_2503 字典树,MAP ...

随机推荐

  1. 腾讯一面问我SQL语句中where条件为什么写上1=1

    目录 where后面加"1=1″还是不加 不用where 1=1 在多条件查询的困惑 使用where 1=1 的好处 使用where 1=1 的坏处 where后面加"1=1″还是 ...

  2. Java并发编程基础三板斧之Semaphore

    引言 最近可以进行个税申报了,还没有申报的同学可以赶紧去试试哦.不过我反正是从上午到下午一直都没有成功的进行申报,一进行申报 就返回"当前访问人数过多,请稍后再试".为什么有些人就 ...

  3. LeetCode-祖父节点值为偶数的结点值之和

    祖父节点值为偶数的结点值之和 LeetCode-1315 这题稍微难度有点大,但是仔细思考还是可以找到思路的. 因为只需要找到祖父节点这最上两层,所以可以带一个参数记录一下祖父节点是否是偶数,以及父节 ...

  4. docker在vulhub中的使用命令合集

          (1)docker  ps(查询 docker 进程的所有容器) (2)docker  info(查看docker详细信息) (3)service docker start(启动docke ...

  5. 漫漫Java路1—基础知识2—注释和命名规则

    ## 注释 1. 单行注释 ```java //这是一个注释 ``` 2. 多行注释 ```java /* 这是一个注释 */ ``` 3. 文档注释 ```java /** * * * */ ``` ...

  6. kubernetes生产实践之redis-cluster

    方案一 自定义yaml文件安装redis cluster 背景 在Kubernetes中部署Redis集群面临挑战,因为每个Redis实例都依赖于一个配置文件,该文件可以跟踪其他集群实例及其角色.为此 ...

  7. docker+compose+nginx+php

    Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. 我用docker做什么? 快速搭建开发所需环境,测试实验新 ...

  8. redhat配置问题

    redhat开机自动连接网络配置 vim  /etc/sysconfig/network-scripts/ifcfg-eth0 将  ONBOOT=no 更改为 yes 即可 redhat配置 yum ...

  9. JAVA视频资料百度网盘分享

    1.javascript视频教程 链接: http://pan.baidu.com/s/1gd57FVH 密码: d9ei 2.JPA视频教程 链接: http://pan.baidu.com/s/1 ...

  10. 滑动窗口解决最小子串问题 leetcode3. Longest Substring Without Repeating Characters

    问题描述: Given a string, find the length of the longest substring without repeating characters. Example ...