题目链接

题目大意 看输入的每个字符串中是否有一个字符串是另一个字符串的前缀

#include<iostream>
#include<cstring>
#include<algorithm>
#include<string.h>
#include<stdio.h>
using namespace std;
#define maxn 10001
string b[maxn];
;
struct ac{
   ];
   void init(){
     sum=;fa=;
     memset(nex,,sizeof(nex));
   }
}tre[maxn*];
void add(char a[],bool &f){
   ,j=,k=;
   while(a[i]){
       ';
       if(tre[k].nex[z]){
          j=tre[k].nex[z];
          tre[j].sum++;
          ;
       }else{
          tre[k].nex[z]=++tot;
          j=tot;
          tre[j].init();
          tre[j].sum++;
       }
       k=j;
       i++;
   }
   tre[k].fa++;
}
/*bool query(string a){
   int i=0,j=0,k=0;
   while(i<a.size()-1){
      int z=a[i]-'0';
      if(tre[k].nex[z]){
         j=tre[k].nex[z];
         if(tre[j].fa) return 1;
      }else return 0;
      k=j;
      i++;
   }
}*/
int main(){
   ];
   ,tt=;
   ;
   while(scanf("%s",a)!=EOF){
      ]!='){
         add(a,fa);
      }else{
         if(fa)
            printf("Set %d is not immediately decodable\n",tt++);
         if(!fa){
             printf("Set %d is immediately decodable\n",tt++);
         }
         len=;tot=,fa=;
         memset(tre,,sizeof(tre));
      }
   }
}

题目链接 : POJ--3630 Phone List

题意和上一个题差不多 都是找里面是否含有前缀和相同的

#include<iostream>
#include<cstring>
#include<algorithm>
#include<string.h>
#include<stdio.h>
using namespace std;
#define maxn 100010
;
struct ac{
   ];
   void init(){
     sum=;fa=;
     memset(nex,,sizeof(nex));
   }
}tre[maxn];
void add(char a[],bool &f){
   ,j=,k=;
   while(a[i]){
       ';
       if(tre[k].nex[z]){
          j=tre[k].nex[z];
          tre[j].sum++;
          ) f=;
          ;
       }else{
          tre[k].nex[z]=++tot;
          j=tot;
          tre[j].init();
          tre[j].sum++;
       }
       k=j;
       i++;
   }
   tre[k].fa++;
}
/*bool query(string a){
   int i=0,j=0,k=0;
   while(i<a.size()-1){
      int z=a[i]-'0';
      if(tre[k].nex[z]){
         j=tre[k].nex[z];
         if(tre[j].fa) return 1;
      }else return 0;
      k=j;
      i++;
   }
}*/
];
int main(){
   int t;
   cin>>t;
   while(t--){
      int n;
      scanf("%d",&n);
      memset(tre,,sizeof(tre));
      tot=;
      ;
      ;j<n;j++){
          scanf("%s",a);
          if(!fa)
          add(a,fa);
      }
      if(fa){
         printf("NO\n");
      }else{
         printf("YES\n");
      }
   }
}

POJ--1056 IMMEDIATE DECODABILITY && POJ--3630 Phone List(字典树)的更多相关文章

  1. poj 1056 IMMEDIATE DECODABILITY 字典树

    题目链接:http://poj.org/problem?id=1056 思路: 字典树的简单应用,就是判断当前所有的单词中有木有一个是另一个的前缀,直接套用模板再在Tire定义中加一个bool类型的变 ...

  2. POJ 2513 Colored Sticks(欧拉道路+字典树+并查集)

    http://poj.org/problem?id=2513 题意: 给定一些木棒,木棒两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相接的一边必须是相同颜色的. 思路: 题目很明 ...

  3. poj 1056 IMMEDIATE DECODABILITY(KMP)

    题目链接:http://poj.org/problem?id=1056 思路分析:检测某字符串是否为另一字符串的前缀,数据很弱,可以使用暴力解法.这里为了练习KMP算法使用了KMP算法. 代码如下: ...

  4. POJ 1056 IMMEDIATE DECODABILITY

    IMMEDIATE DECODABILITY Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9630   Accepted: ...

  5. POJ 1056 IMMEDIATE DECODABILITY 【Trie树】

    <题目链接> 题目大意:给你几段只包含0,1的序列,判断这几段序列中,是否存在至少一段序列是另一段序列的前缀. 解题分析: Trie树水题,只需要在每次插入字符串,并且在Trie树上创建节 ...

  6. POJ 1056 IMMEDIATE DECODABILITY Trie 字符串前缀查找

    POJ1056 给定若干个字符串的集合 判断每个集合中是否有某个字符串是其他某个字符串的前缀 (哈夫曼编码有这个要求) 简单的过一遍Trie就可以了 #include<iostream> ...

  7. poj 3630 Phone List(字典树)

    题目链接: http://poj.org/problem?id=3630 思路分析: 求在字符串中是否存在某个字符串为另一字符串的前缀: 即对于某个字符串而言,其是否为某个字符串的前缀,或存在某个其先 ...

  8. Phone List POJ 3630 Trie Tree 字典树

    Phone List Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29416   Accepted: 8774 Descr ...

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

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

  10. POJ 3007 Organize Your Train part II (字典树 静态)

    Organize Your Train part II Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6478   Acce ...

随机推荐

  1. nodejs配置nginx 以后链接mongodb数据库

    服务器 :windows server2008 R2 反向代理 :nginx 1.15.1 for window 64位 数据库:mongodb 4 64位 使用框架express 首先下载nodej ...

  2. Mybatis+Spring整合后Mapper测试类编写

    public class UserMapperTest { private ApplicationContext applicationContext; @Before public void ini ...

  3. java随笔3 spring 的注入执行逻辑顺序

  4. day 7 -1 进程理论知识

    一.进程的定义 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实 ...

  5. prop与attr

    1.都是获取当前元素某个属性的值 2.当获取多选框的状态时,如果没有选中,此时没有checked属性,用attr获取得到undifien prop得到false. 3.html原生属性用prop获取, ...

  6. Redis的java客户端jedis

    导包:Jedis需要的jar包 >Commons-pool-1.6.jar >Jedis-2.1.0.jar 配置:linux防火墙设置,不会设置就关闭. 停止防火墙 systemctl ...

  7. 在eclipse中spring的xml配置文件标签中class路径全限定名自动提示设置

    这个自动提示其实很简单,没有网上说的那些要在help下的Install中输入网址来下载更新一堆东西那么复杂. 只需要打开Help — — >Eclipse Marketplace... 然后在该 ...

  8. python3 输出系统信息

    一.安装psutil库 pip3 install psutil 二.代码 #!/usr/bin/python3 coding=utf-8 import psutil import uuid impor ...

  9. vs code配置

    新版的用户设置不是代码, https://blog.csdn.net/zhaojia92/article/details/53862840 https://www.cnblogs.com/why-no ...

  10. Missing artifact com.oracle:ojdbc6:jar:11.2.0.3 Maven中不能引入ojdbc解决方法,错误

    今天从服务器检出Maven项目的时候,遇到了一个问题,就是在pom.xml中引入ojdbc的jar包的时候出错了,提示是Missing artifact com.oracle:ojdbc6:jar:1 ...