我以为像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)相关推荐

  1. hdu1247 Hat’s Words

    地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=1247 题目: Hat's Words Time Limit: 2000/1000 MS (Ja ...

  2. hdu1247 Hat’s Words

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

  3. 题目梳理(一)(2019.07.06~2019.07.20)

    一.字典树类型 A   HihoCoder1014 Trie树(已做) 题目链接    https://hihocoder.com/problemset/problem/1014 B    HDU12 ...

  4. HDU1247 字典树 Hat’s Words(Tire Tree)

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

  5. Hat’s Words(HDU-1247)

    Problem Description A hat's word is a word in the dictionary that is the concatenation of exactly tw ...

  6. 【Trie】【HDU1247】【Hat’s Wordsfd2】

    题目大意: hat's word 的定义是字典中 恰好由另外两个单词连接起来的单词 给你一本字典,问有多少个hat's word,(字典按字典序给出) 单词数50000.. 初步思路: 单词分为前缀单 ...

  7. Hat’s Words(字典树)

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

  8. Red Hat Linux 安装教程

    一.下载链接 链接:https://pan.baidu.com/s/1JShQmOrgGG5_uaqPUuaHLg  提取码:ture 二.安装步骤 1.打开虚拟机,单击"创建新的虚拟机&q ...

  9. 在Red Hat Linux5下构建LAMP网站服务平台之MySQL、PHP的安装与配置

    在Red Hat Linux5下构建LAMP网站服务平台之MySQL.PHP的安装与配置 2010-09-09 16:40:49 标签:PHP Linux mysql RedHat [推送到技术圈] ...

最新文章

  1. Android Camera设置setPreviewCallback实现onPreviewFrame接口实时截取每一帧视频流数据
  2. OpenCV中图像显示窗口函数namedWindow()详解
  3. 实验八 接口与实现接口的类
  4. 数列分块入门(套题)(loj6277,loj6278,loj6279,loj6280,loj6281,loj6282,loj6283,loj6284,loj6285)
  5. ​KDD 2019 | 用户视角看世界:腾讯提出ConcepT概念挖掘系统,助力推荐搜索
  6. 一、【用django2.0来开发】 环境部署和初始化项目
  7. 电脑手写输入法_百度输入法“手写输入”为什么不是老年人的专利?AI的进步...
  8. 微博抽奖贴为什么到时间了不开奖_热搜第一!微博闹剧,锦鲤“信小呆”被这样处罚...
  9. IDEA - 解决“idea 环境:junit:4.11 测试 mybatis 代码,无法导入 org.junit.Test 包”问题
  10. [在Windows上使用Unix工具]MKS
  11. 手撸一个 Router 框架(上):熟悉 APT
  12. [译] Commit 提交指南
  13. 遗传算法 matlab实现 多维变量 二进制编码
  14. 锂电池充电芯片,30款设计免费开源
  15. 网页中视频在线播放脚本
  16. 常见的信息收集工具和手段
  17. Ecshop 表结构 字段说明
  18. 一个Dom绑定多个事件
  19. java面向过程外卖订餐系统 完整版
  20. 关于字符集(彻底搞清楚一个中文占几个字节?)

热门文章

  1. WCF学习笔记之序列化
  2. java dll 乱码_java调用c++ dll出现中文乱码 | 学步园
  3. tensorflow下载
  4. 服务器设备性能说明,OMC服务器硬件性能和配置说明.doc
  5. python修改列表中字典内的值_python修改字典内key对应值的方法
  6. 批量添加PDF帐号目录
  7. 产品认知:真正厉害的产品经理,都是“本质思维”的高手
  8. python协程池操作mysql_python_协程方式操作数据库
  9. 三态门三个状态vhdl_温故知新,高阻态和三态门
  10. 现在抖音这么火,那么你知道如何用CSS实现抖音字体?