hdu 1305 Immediate Decodability(Trie树)
来源:互联网 发布:现在学java前景怎么样 编辑:程序博客网 时间:2024/05/18 03:58
小记:1A,在将code插入trie树里,判断插入时是否有其它单词也是这样插的路径上耽搁了下,
思路:trie树,在插入一个code时,如果一路一个一个字符的存入trie树时是没有在哪个字符时是被标记为一个code的时候,那么就返回插入成功。
这里有三种情况,
第一:从第一个就到最后一个字符都是new开辟出来的空间,也就是没有出现过已经被new过的字符
第二:前面的字符都已经被开辟了,到某一个时还没开辟,那么之后的就都开辟
第三,一路都是已经开辟过了的
对于第一种情况,肯定返回插入成功
第二种,如果前面的开辟的字符里,没有一个字符的标记是标记为是一个code的,那么就返回成功,否则返回插入失败,即不是immediate decodability
第三种,那就是当没开辟过,那么肯定是插入失败了,即是前面某个code的prefix前缀
如果插入失败那么之后的code就不需要处理了,直接读完即可
代码:
#include <iostream>#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <map>#include <set>#include <vector>#include <stack>#include <queue>#include <algorithm>using namespace std;#define mst(a,b) memset(a,b,sizeof(a))#define eps 10e-8const int MAX_ = 10010;const int MAX = 10;const int N = 100010;const int INF = 0x7fffffff;typedef struct Node{ int isStr; struct Node *next[MAX]; Node():isStr(0){ memset(next, NULL, sizeof(next)); } ~Node(){ for(int i = 0;i < MAX; ++i) if(next[i] != NULL) delete next[i]; }}TrieNode,*Trie;Trie root;int Insert(char *s){ bool flag = false; TrieNode *p = root,*q; while(*s){ if(p ->next[*s-'0'] == NULL){ q = new TrieNode; p ->next[*s-'0'] = q; flag = true; } if(p->isStr == 1){ return 0; } p = p ->next[*s-'0']; s++; } p->isStr = 1; if(!flag)return 0; return 1;}int main() { char s[MAX*10], str[MAX*10]; int ans, cnt, len; bool flag; flag = true;cnt = 1; root = new TrieNode; //ans = 0;flag = false;cnt = 0; while(scanf("%s",s)!=EOF){ if(s[0] == '9'){ if(!flag){ printf("Set %d is not immediately decodable\n",cnt++); } else printf("Set %d is immediately decodable\n",cnt++); flag = true; delete root; root = new TrieNode; continue; } if(flag) flag = Insert(s); }}
0 0
- hdu 1305 Immediate Decodability(Trie树)
- HDU-1305 Immediate Decodability (Trie 字典树 入门题)
- HDU 1305 Immediate Decodability (字典树)
- HDOJ-1305Immediate Decodability(Trie树入门)
- POJ1056 IMMEDIATE DECODABILITY(Trie树)
- HDU-1305-Immediate Decodability
- hdu 1305 Immediate Decodability
- hdu 1305 Immediate Decodability
- HDU-1305 Immediate Decodability
- hdu-1305 Immediate Decodability
- HDU 1305 Immediate Decodability
- hdu 1305 Immediate Decodability
- hdu 1305 Immediate Decodability
- HDU 1305 Immediate Decodability
- hdu-1305-Immediate Decodability
- HDU 1305:Immediate Decodability
- HDU 1305 Immediate Decodability
- hdu 1305 Immediate Decodability (字典树入门)
- Android开源项目第二篇——工具库篇
- GCC options for ARM architectures
- 抽象类与接口
- VC++动态链接库(DLL)编程深入浅出(一)
- IOSsymbol(s) not found for architecture i386 解决办法
- hdu 1305 Immediate Decodability(Trie树)
- 给程序员简历的一些建议
- likearticle 取消当关键词是空时候乱调用其他文章
- 第7周
- all sort
- c#各种小程序
- IOS用NSXMLParser实现XML解析
- 开博声明
- 表格中的 border-collapse 和 border-spacing