博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hat’s Words
阅读量:4971 次
发布时间:2019-06-12

本文共 1500 字,大约阅读时间需要 5 分钟。

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
#include<stdio.h>
#include<malloc.h>
#include<string.h>
char lx[50000][50];
struct node
{
  bool flag;
  struct node*next[26];
};
node root;
void create(char *s)
{
 node *p=&root,*q;
 int i,j;
 int len=strlen(s);
 for(i=0;i<len;i++)
 {
       int num=s[i]-'a';
    if(p->next[num]==NULL)
    {
     q=(node*)malloc(sizeof(node));
     q->flag=false;
     for(j=0;j<26;j++)
     {
      q->next[j]=NULL;
     }
     p->next[num]=q;
    }
    p=p->next[num];
 }
 p->flag=true;
}
bool finder(char *s)
{
   int i,j;
   for(i=0;i<strlen(s);i++)
   {
    node *p=&root;
       for(j=0;j<i;j++)
    {
     int num=s[j]-'a';
           p=p->next[num];
    }
    if(p->flag==true)
    {
     node *q=&root;
     bool is=true;
          for(j=i;j<strlen(s);j++)
    {
             int k=s[j]-'a';
    if(q->next[k]==NULL) { is=false;break;}
    q=q->next[k];
    }
    if(q->flag==true&&is==true)  return true;
    }
   }
   return false;
}
int main()
{
// freopen("in.txt","r",stdin);
   
 int i=0,j;
 while(scanf("%s",lx[i])!=EOF)
 {
  create(lx[i]);
  i++;
 }
 for(j=0;j<i;j++)
 {
  if(finder(lx[j]))  printf("%s\n",lx[j]);
 }
 return 0;
}

转载于:https://www.cnblogs.com/ffhuguang/archive/2013/02/25/2932744.html

你可能感兴趣的文章
加班快乐
查看>>
All-In-One方式-安装openstack
查看>>
AT 指令和常见错误码
查看>>
Js闭包应用场合,为vue的watch加上一个延迟器
查看>>
Django模板-基础知识
查看>>
Android 系统framework 概述【转载】
查看>>
Spring之JDBC
查看>>
A Simple make file tutorial
查看>>
python之PIL安装问题
查看>>
Python排序算法之冒泡排序
查看>>
hdu.3308 LCIS(线段树,区间合并+单点更新)
查看>>
LINUX 查看硬件配置命令
查看>>
图解git
查看>>
iOS APP网络分析之rvictl(可以捕捉除了Wifi以外的网络类型)
查看>>
传奇版本中利用NPC迅速给人物加血脚本制作
查看>>
ajax 实现修改功能
查看>>
Android drawable微技巧,你所不知道的drawable的那些细节
查看>>
两栏自适应布局延展到多栏自适应布局
查看>>
[Codeforces Round #162 (Div. 2)]C. Escape from Stones
查看>>
(最小路径覆盖) poj 2446
查看>>