HDU_1305 Immediate Decodability 【字典树】
来源:互联网 发布:linux ftp限制ip访问 编辑:程序博客网 时间:2024/06/03 10:06
题目链接
题目描述
不断输入字符串直到字符为”9”结束,如果在”9”之前,一个字符的代码不是另一个字符的代码的前缀,则这种情况为立即可解就输出”is immediately decodable”否则输出”is not immediately decodable”
解题思路
字典树求前缀是否出现过,每插入一个字符就对字符进行查找。
插入时给字符最后的节点加1表示该节点存在。查找的过程:如果在向下扩展的过程中发现节点的cnt有值,就说明该字符已经存在,即为当前查找的字符的前缀,就让标记为假然后按格式输出就可以了。
代码部分
#include <bits/stdc++.h>using namespace std;const int en = 10;const int maxn = 1e6;bool flag;struct Trie{ int cnt; Trie *nex[en];} T[maxn];int top;inline int idx(char c){ return c - '0';}inline Trie * CreatTrie(){ Trie *p = &T[top ++]; p -> cnt = 0; for(int i = 0; i< en; ++ i) p -> nex[i] = NULL; return p;}inline Trie * Init(){ top = 0; return CreatTrie();}void Insert(Trie *root, string s){ Trie *p = root; for(int i = 0; i < s.size(); ++ i) { int temp = idx(s[i]); if(p -> nex[temp] == NULL) p -> nex[temp] = CreatTrie(); p = p -> nex[temp]; } p -> cnt ++;}int Search(Trie *root, string s){ Trie *p = root; for(int i = 0; i < s.size(); ++ i) { int temp = idx(s[i]); if(p -> nex[temp] -> cnt && i != s.size() - 1) flag = false; p = p -> nex[temp]; }}int main(){ ios::sync_with_stdio(false); int cas = 0; Trie *root = Init(); flag = true; string s; while(cin >> s) { if(s != "9") { Insert(root, s); Search(root, s); } else { if(flag) cout << "Set " << ++ cas << " is immediately decodable" << endl; else cout << "Set " << ++ cas << " is not immediately decodable" << endl; Trie *root = Init(); flag = true; } } return 0;}
阅读全文
1 0
- Immediate Decodability (HDU_1305) 字典树
- HDU_1305 Immediate Decodability 【字典树】
- Immediate Decodability 字典树
- IMMEDIATE DECODABILITY(字典树)
- Immediate Decodability-字典树
- hdu1305 Immediate Decodability (字典树)
- IMMEDIATE DECODABILITY(字典树)
- hdu1305-Immediate Decodability 字典树
- hdu1305-Immediate Decodability 字典树
- poj1056 IMMEDIATE DECODABILITY (字典树)
- 【hdu】 Immediate Decodability (字典树)
- hdu 1305 Immediate Decodability(字典树)
- POJ 1056 IMMEDIATE DECODABILITY (字典树)
- Hdu 1305 Immediate Decodability 字典树
- 字典树——Immediate Decodability
- 寒假训练--字典树--A - Immediate Decodability
- POJ 1056 IMMEDIATE DECODABILITY 字典树
- poj 1056 IMMEDIATE DECODABILITY 字典树
- Java中的多线程你只要看这一篇就够了
- Maven 引Spring Boot 项目
- 深入理解Java虚拟机 JVM高级特性与最佳实践-第2版
- Eclipse常用插件更新地址
- hdu 5875(ST&&二分区间)
- HDU_1305 Immediate Decodability 【字典树】
- linux的shell介绍
- 多线程的总结
- 学习笔记TF036:实现Bidirectional LSTM Classifier
- 自已动手编译Linux系统-基于ALFS的LFS8.0实践(五)
- net中多文档程序中父窗口和子窗口菜单的合并中菜单项的,MergeAction和MergeIndex属性浅谈
- Tesseract4.0+win10+2015编译
- 17暑假多校联赛6.8 HDU 6103 Kirinriki
- 原生js倒计时