#include<cstdio>
#include<iostream>
#include<string>
#include<cstdlib>
#define maxn 2
#include<queue>
using namespace std;
struct
Tri
{

Tri*next[maxn];
int
num;
};

Tri *root;
void
buildTri(string ss)//建树的过程是一个动态的过程 动插的过程
{
Tri *p=root,*q;
for
(int i=;i<ss.size();i++)
{

int
id=ss[i]-'0';
if
(p->next[id]==NULL)
{

q=(Tri*)malloc(sizeof(Tri));
q->num=;
for
(int j=;j<maxn;j++) q->next[j]=NULL;
p->next[id]=q;
p=p->next[id];
}

else
p=p->next[id],p->num++;
}

p->num=-;// 作为结束的标志
}
int
findTri(string ss)
{

Tri *p=root,*q;
for
(int i=;i<ss.size();i++)
{

int
id=ss[i]-'0';
p=p->next[id];
if
(p==NULL) return;
if
(p->num==-) return -;
}

return
-;
}

void
del(Tri *root)
{

Tri *zz=root;
if
(zz==NULL) return;
for
(int i=;i<maxn;i++)
{

if
(zz->next[i]!=NULL) del(zz->next[i]);
}

free(zz);
}

int
main()
{

int
Case=;
string ss;
queue<string> fuck;
while
(cin>>ss)
{

if
(ss=="9")
{

int
flag=;
root=(Tri *)malloc(sizeof(Tri));
for
(int i=;i<maxn;i++) root->next[i]=NULL;
root->num=;
while
(!fuck.empty())
{

string temp;
temp=fuck.front();
fuck.pop();
if
(findTri(temp)==-)
{

flag=;
break
;
}

buildTri(temp);
}

if
(flag) printf("Set %d is immediately decodable\n",++Case);
else
printf("Set %d is not immediately decodable\n",++Case);
del(root);
continue
;
}

fuck.push(ss);
}

return
;
}

hdu 1305 还是字典树的更多相关文章

  1. hdu 1979 DFS + 字典树剪枝

    http://acm.hdu.edu.cn/showproblem.php?pid=1979 Fill the blanks Time Limit: 3000/1000 MS (Java/Others ...

  2. hdu 2846(字典树)

    Repository Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  3. HDU 2846 Repository (字典树 后缀建树)

    Repository Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  4. HDU 1671 (字典树统计是否有前缀)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1671 Problem Description Given a list of phone number ...

  5. HDU 2846 Repository(字典树,标记)

    题目 字典树,注意初始化的位置~!!位置放错,永远也到不了终点了org.... 我是用数组模拟的字典树,这就要注意内存开多少了,,要开的不大不小刚刚好真的不容易啊.... 我用了val来标记是否是同一 ...

  6. *hdu 5536(字典树的运用)

    Input The first line of input contains an integer T indicating the total number of test cases. The f ...

  7. three arrays HDU - 6625 (字典树)

    three arrays \[ Time Limit: 2500 ms \quad Memory Limit: 262144 kB \] 题意 给出 \(a\),\(b\) 数组,定义数组 \(c[i ...

  8. HDU 6625 (01字典树)

    题意:给定两个长为n的数组a和b:重新排列a和b,生成数组c,c[i]=a[i] xor b[i]:输出字典序最小的c数组. 分析:将a中的数插入一颗01字典树a中:将b中的数插入一颗01字典树b中: ...

  9. HDU 1298 T9 ( 字典树 )

    题意 : 给你 w 个单词以及他们的频率,现在给出模拟 9 键打字的一串数字,要你在其模拟打字的过程中给出不同长度的提示词,出现的提示词应当是之前频率最高的,当然提示词不需要完整的,也可以是 w 个单 ...

随机推荐

  1. pwn学习日记Day21 《程序员的自我修养》读书笔记

    Linux内核装载ELF过程 (1)bash进程调用fork()系统调用创建一个新的进程 (2)新的进程调用execve()系统调用执行指定的ELF文件,原先的bash进程继续返回等待刚才启动的新进程 ...

  2. 重读APUE(13)-可靠信号

    在信号产生和传递之间有一段时间间隔,称为信号是未决的: 进程可以设置阻塞信号传递:如果进程产生了一个阻塞的信号,并且对该信号的动作是系统默认或者捕捉该信号,则该进程保持此信号为未决状态,直到该进程对此 ...

  3. Flutter路由跳转父级页面向子页面传参及子页面向父级页面传参

    Flutter中页面通过路由跳转传参主要分两种,一种是通过push()跳转时根据设定的参数进行传参,另一种是通过pop()返回时进行传参. 父级页面向子页面push()传参 假设从A页面跳到B页面可能 ...

  4. ArcGIS超级工具SPTOOLS-拓扑错误处理

    1.1  删除线面直线上的点 操作视频: https://weibo.com/tv/v/Hxjgmuv6F?fid=1034:4379388532225679 删除面要素.线要素一条边直线上的点. 1 ...

  5. windows工程总结

    1.win32控制台console程序 运行在MS-DOS环境中的程序.控制台应用程序通常没有可视化的界面,只是通过字符串来显示或者监控程序.控制台程序常常被应用在测试.监控等用途,用户往往只关心数据 ...

  6. Xshell查看日志

    查询日志命令(复制后鼠标右键粘贴): tail  -1000f /mnt/logs/SMFManagement/SMFManagement_info.log

  7. quartz.net 学习

    目录 简介  Quartz是什么?  Quartz的应用场景Quartz的安装  安装  源码Hello World范例API  核心API    Scheduler接口:    Job接口    J ...

  8. 浏览器与NodeJS环境 eventloop异同详解(转)

    结论:浏览器中是一个宏任务,所有微任务,一个宏任务,所有微任务...           NodeJS中,一种宏任务队列所有任务,所有微任务,一种宏任务队列所有任务,所有微任务... ┌─────── ...

  9. spring常用模式--委派模式

    1.委派模式简介 在常用的23种设计模式中其实面没有委派模式(delegate)的影子,但是在Spring中委派模式确实用的比较多的一种模式. 在spring中的体现:Spring MVC框架中的Di ...

  10. [Scikit-learn] 2.5 Dimensionality reduction - Probabilistic PCA & Factor Analysis

    2.5.4. Factor Analysis PPCA的基本性质以及人肉推导: 以上假设z是标准正态分布的情况.以下是对z的分布的扩展,为general normal distribution. Fr ...