hdu 1247 Hat’s Words

简介:

Hat’s Words

            Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2414    Accepted Submission(s): 880


Problem Description

A hat’s word is a word in the dictionary that is the concatenation of exactly two other words in the dictionary.
You are to find all the hat’s words in a dictionary.

 

Input

Standard input consists of a number of lowercase words, one per line, in alphabetical order. There will be no more than 50,000 words.
Only one case.

 

Output

Your output should contain all the hat’s words, one per line, in alphabetical order.

 

Sample Input
  a
  ahat
  hat
  hatword
  hziee
  word

 

Sample Output
  ahat
  hatword

 

 

题意很清楚:就是给出若干个单词,找出其中能够由其它两个单词连接组合而成的单词。比如上面sample中的"ahat"能够由"a"和"hat"拼凑而成,"hatword"="hat"+"word".因此只需对每个单词进行切分,把切分得到的两个单词在原单词序列中查找,若能查到则符合条件。在这里为了降低查找的复杂度,采用Trie树存储原始单词序列。

实现代码:

/*hdu 1247 Hat's word 字典树 2011.10.16*/
#include <iostream>
#include<cstring>
#define MAX 26
using  namespace  std;
 
typedef  struct  Trie_Node
{
     bool  isWord;
     struct  Trie_Node *next[MAX];
}Trie;
 
char  s[50000][50];
 
void  insert(Trie *root, char  *word)      //插入单词
{
     Trie *p=root;
     while (*word!= '\0' )
     {
         if (p->next[*word- 'a' ]==NULL)
         {
             Trie *temp=(Trie *) malloc ( sizeof (Trie));
             for ( int  i=0;i<MAX;i++)
             {
                 temp->next[i]=NULL;
             }
             temp->isWord= false ;
             p->next[*word- 'a' ]=temp;
         }
         p=p->next[*word- 'a' ];
         word++;
     }
     p->isWord= true ;
}
 
bool  search(Trie *root, char  *word)         //查找单词是否存在
{
     Trie *p=root;
     for ( int  i=0;word[i]!= '\0' ;i++)
     {
         if (p==NULL||p->next[word[i]- 'a' ]==NULL)
             return  false ;
         p=p->next[word[i]- 'a' ];
     }
     return  p->isWord;
}
 
void  del(Trie *root)                    //释放空间
{
     for ( int  i=0;i<MAX;i++)
     {
         if (root->next[i]!=NULL)
         {
             del(root->next[i]);
         }
     }
     free (root);
}
 
 
int  main( int  argc, char  *argv[])
{
     int  i,j;
     int  count=0;
     char  str[50];
     Trie *root=(Trie *) malloc ( sizeof (Trie));
     for (i=0;i<MAX;i++)
     {
         root->next[i]=NULL;
     }
     root->isWord= false ;
     while ( scanf ( "%s" ,str)!=EOF)
     {  
         strcpy (s[count++],str);
         insert(root,str);  
     }
     for (i=0;i<count;i++)
     {  
         for (j=1;j<= strlen (s[i])-1;j++)  
         {
             char  temp1[50]={ '\0' };
             char  temp2[50]={ '\0' };
             strncpy (temp1,s[i],j);    
             strncpy (temp2,s[i]+j, strlen (s[i])-j);
             if (search(root,temp1)&&search(root,temp2))
             {
                 printf ( "%s\n" ,s[i]);
                 break ;                       //注意查找成功之后,需跳出循环,否则可能会重复打印
             }
         }
     }
     del(root);
     return  0;
}

本文转载自海 子博客园博客,原文链接:http://www.cnblogs.com/dolphin0520/archive/2011/10/16/2214231.html 如需转载自行联系原作者


相关文章
|
设计模式 前端开发 Java
SpringMvc框架入门使用(详细教程)
SpringMvc框架入门使用(详细教程)
364 0
|
6月前
|
存储 人工智能 弹性计算
数智化转型不是“买硬件”,DeepSeek一体机别乱上
过去一个月,DeepSeek一体机成为热门生意,各厂商纷纷推出相关产品。然而,其是否为企业最优解仍需探讨。云厂商如华为云已上线DeepSeek系列模型推理服务,提供全面部署方案。本文对比两种典型部署方式,解析一体机的算力短板与场景局限,并探讨云服务的成本、稳定性和数据安全优势。大模型落地需回归企业核心诉求,理性选择而非盲目跟风。文中强调技术自由度与场景丰富度的重要性,建议企业在数智化转型中谨慎决策,确保技术投入带来长期价值。
318 27
|
6月前
|
存储 机器学习/深度学习 人工智能
阿里云服务器第八代通用型g8i实例评测:性能与适用场景解析
阿里云服务器通用型g8i实例怎么样?g8i实例采用CIPU+飞天技术架构,并搭载最新的Intel 第五代至强可扩展处理器(代号EMR),不仅性能得到大幅提升,同时还拥有AMX加持的AI能力增强,以及全球范围内率先支持的TDX机密虚拟机能力。这些特性使得g8i实例在AI增强和全面安全防护两大方面表现出色,尤其适用于在线音视频及AI相关应用。本文将深入探讨g8i实例的产品特性、优势、适用场景及规格族,以帮助您更好地了解这款产品,以供参考和选择。
|
JavaScript 前端开发 索引
JS中的substr()和substring()函数有什么区别
JS中的substr()和substring()函数有什么区别
|
缓存 Python
[译]Python 和 TOML:新最好的朋友 (2) 使用Python操作TOML
[译]Python 和 TOML:新最好的朋友 (2) 使用Python操作TOML
484 1
|
设计模式 Java 开发者
工厂设计模式的实现与应用场景分析
工厂设计模式的实现与应用场景分析
|
机器学习/深度学习 人工智能 自然语言处理
|
存储 机器学习/深度学习 人工智能
先进级!阿里云大数据+AI平台通过信通院数据平台整体解决方案最高等级评测
近日,在中国信通院组织的第十四批“可信大数据”产品能力评测中,阿里云计算有限公司顺利完成了首个数据平台整体解决方案评测,达到最高等级先进级(3级)。该评测依据 《集成化大数据平台能力分级要求》进行,共涉及10个能力域,44个能力项和577项技术要求。全方位覆盖大数据平台的数据存储、数据集成、数据管理与治理、数据开发、数据处理及分析、数据服务、高可用、平台管理、系统运维、数据安全等能力。
1881 0
先进级!阿里云大数据+AI平台通过信通院数据平台整体解决方案最高等级评测
|
安全 关系型数据库 数据库
rds安全相关
rds安全相关
216 1
|
Kubernetes 容器
k8s ingress获取真实IP地址配置
背景 业务架构:Client->WAF->LB->ECS->容器问题:在容器中获取不到真实的客户端公网IP 抓包分析 在ECS上的抓包分析,看到WAF已经将 真实客户端地址放到了 x-Forwarded-For 的字段中传给了ECS ![image](https://yqfile.
17186 0