hdu 1305 Immediate Decodability

简介: 点击打开链接hdu1305 思路:字典树 分析: 1 题目要求的是是否有一个字符串作为其它字符串的前缀 2 利用字典树的性质在插入的时候就可以判断某一个字符串是否是其它字符串或当前字符串是其它字符串的前缀 3 多组数据利用静态分配不能用动态分配。

点击打开链接hdu1305


思路:字典树

分析:
1 题目要求的是是否有一个字符串作为其它字符串的前缀
2 利用字典树的性质在插入的时候就可以判断某一个字符串是否是其它字符串或当前字符串是其它字符串的前缀
3 多组数据利用静态分配不能用动态分配。

代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;

#define MAXN 1000010
#define N 15

int cnt;
struct Trie{
   bool flag;
   Trie *child[N];
}trie[MAXN];
Trie *root;

/*静态分配空间*/
Trie* newTrie(){
   trie[cnt].flag = false;
   for(int i = 0 ; i < N ; i++)
      trie[cnt].child[i] = NULL;
   return &trie[cnt++];
}

/*字典树的插入*/
bool insert(char *str){
    Trie *s = root;
    int len = strlen(str);
    for(int i = 0 ; i < len ; i++){
       int num = str[i]-'0';
       if(s->child[num] == NULL)
         s->child[num] = newTrie();
       s = s->child[num];
       if(s->flag == true)
          return false;
    }
    for(int i = 0 ; i < N ; i++){
       if(s->child[i])
         return false;
    }
    s->flag = true;
    return true;
}

int main(){
   int mark , Case;
   char ch[N];
   Case = 1;
   while(scanf("%s" , ch) != EOF){
       cnt = 0;
       root = newTrie();
       mark = 1;
       if(!insert(ch))
          mark = 0;
       while(scanf("%s" , ch) && strcmp(ch , "9") != 0){
          if(mark){
            if(!insert(ch))
              mark = 0;
          }
       }
       if(mark)
         printf("Set %d is immediately decodable\n" , Case++);
       else
         printf("Set %d is not immediately decodable\n" , Case++);
   }
   return 0;
}




目录
相关文章
|
关系型数据库 MySQL Shell
MySQL高可用之双主+Keepalived,轻松实现单点故障VIP转移
MySQL高可用之双主+Keepalived,轻松实现单点故障VIP转移
2266 0
MySQL高可用之双主+Keepalived,轻松实现单点故障VIP转移
|
SQL 监控 AliSQL
RDS MySQL最新发布的经济规格,包月仅需18元
RDS基础版经济规格,高性价比,让开发更轻松,学习更高效
1858 15
|
安全 算法 Java
Java“NoSuchProviderException”解决
“NoSuchProviderException”是Java中的一种异常,通常在尝试使用未安装或未正确注册的安全提供者时抛出。解决方法包括确保所需的安全提供者已正确安装和配置,或在代码中显式添加提供者。
412 0
|
设计模式 前端开发 PHP
PHP中实现简易的MVC模式
【8月更文挑战第31天】 本文将引导你了解如何在PHP中应用MVC(Model-View-Controller)架构模式,通过一个简单的例子展示其实现过程。我们将从基础的概念出发,逐步深入到代码实践,最终让你能够自己动手构建一个简易的MVC框架。文章不仅提供理论知识,还包含具体的代码示例,帮助你更好地理解并运用MVC模式。
|
存储 网络协议 物联网
网络中的“客户端”和“服务器
【8月更文挑战第24天】
1441 0
|
XML JSON 算法
网络地图服务(WMS)详解
网络地图服务(WMS)详解
468 0
|
JavaScript Java 测试技术
基于微信小程序的医院挂号系统的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的医院挂号系统的设计与实现(源码+lw+部署文档+讲解等)
211 1
|
存储 运维 Kubernetes
构建高效自动化运维体系:Ansible与Kubernetes的协同策略
【4月更文挑战第29天】 在当今快速迭代的软件开发环境中,自动化运维成为了确保部署效率和稳定性的关键。本文深入探讨了如何通过Ansible和Kubernetes的集成来实现高效的自动化配置管理与容器编排。文章首先介绍了Ansible与Kubernetes各自的特点及优势,随后详细阐述了它们在自动化运维中的互补作用,并提供了一个实用的集成方案。通过案例分析,验证了该策略在提高部署速度、降低人为错误以及增强系统可靠性方面的有效性。最后,讨论了实施过程中可能遇到的挑战和解决思路。
|
网络协议 网络架构
网络工程师如何配置6to4隧道解决IPv6过渡问题(含动图)?
网络工程师如何配置6to4隧道解决IPv6过渡问题(含动图)?
1088 0