题目:http://poj.org/problem?id=1056
题意:判断是否有串是其他串的前缀
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 |
#include<algorithm> #include<stdio.h> #include<iostream> #include<set> #include<map> #include<queue> #include<stack> #include<string.h> using
namespace std; struct
Node { int
cnt;Node * next[50]; }e[111111]; int
len=0; Node * newnode() { memset (&e[len],0, sizeof (e[len])); return
&e[len++]; } void
Insert( char
*s,Node *root) { int
len= strlen (s); for ( int
i=0;i<len;i++){ int
cc=s[i]- ‘0‘ ; if (!root->next[cc]){ root->next[cc]=newnode(); } root->cnt++; root=root->next[cc]; } root->cnt++; } int
Find( char
*s,Node *root) { int
len= strlen (s); for ( int
i=0;i<len;i++){ int
cc=s[i]- ‘0‘ ; root=root->next[cc]; } if (root->cnt>1) return
1; else return
0; } char
str[1005][1005]; int
main() { int
i=-1; int
ret=1; int
flag=0;Node *root=newnode(); while ( scanf ( "%s" ,&str[++i])!=EOF){ Insert(str[i],root); if ( strcmp (str[i], "9" )==0){ for ( int
j=0;j<i;j++){ if (Find(str[j],root)){ flag=1; printf ( "Set %d is not immediately decodable\n" ,ret++); break ; } } if (flag==0){ printf ( "Set %d is immediately decodable\n" ,ret++); } i=-1;len=0;flag=0;root=newnode(); } } return
0; } |
Trie树 POJ1056 IMMEDIATE DECODABILITY,布布扣,bubuko.com
Trie树 POJ1056 IMMEDIATE DECODABILITY
原文地址:http://www.cnblogs.com/yigexigua/p/3761300.html