字典树题目:
#include<stdio.h>
#include<string.h>
#define max 3000
struct node
{
bool ju;
struct node *next[16];
} Node,Rood[max];
int sum=0;
int BuildTree(char *word)
{
node *root=&Node;
while(*word)
{
if(root->next[*word-'0']==NULL)
{
Rood[sum].ju=false;
root->next[*word-'0']=&Rood[sum++];
}
root=root->next[*word-'0'];
if(root->ju)
return 1;
word++;
}
root->ju=true;
// printf("zhuhao\n");
return 0;
}
int main()
{
char map[1000][300];
int num=-1;
int n;
int tem=0;
int step=0;
int judge=0;
while(scanf("%s",map[++num])!=EOF)
{
if(map[num][0]=='9')
{
if(tem)
printf("Set %d is not immediately decodable\n",++step);
else
printf("Set %d is immediately decodable\n",++step);
memset(map,0,sizeof(0));
for(int i=0; i<=sum; i++)
Rood[i].ju=false;
tem=0;
}
n=BuildTree(map[num]);
// printf("n=%d\n",n);
if(n)
tem=1;
}
return 0;
}