| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:第一次用字段树,总是WA不知道哪的问题...请哪位帮忙解答下,谢谢啦!!In Reply To:第一次用字段树,总是WA不知道哪的问题...请哪位帮忙解答下,谢谢啦!! Posted by:RomanStorm at 2009-10-17 10:26:27 感觉有点复杂,其实在 每次 Insert 的时候就可以判断是否有了
我只用了 insert 函数,没用其他的,不用 sort
关键部分代码
void insert(Trie *head,char str[])
{
Trie *s=head;
Trie *t;
int len=strlen(str);
int i;
for(i=0;i<len;i++)
{
if(s->next[str[i]-'0']==NULL)
break;
s=s->next[str[i]-'0'];
if(s->flag)
ans=1; // 代表有前缀
}
if( i==len )
{
s->flag=1;
for(int k=0;k<10;k++)
{
if( s->next[k]!=NULL )
{
ans=1;
break;
}
}
return;
}
for(int j=i;j<len;j++)
{
t=&tt[pos++];//动态分配孩子
for(int k=0;k<10;k++)//清空
{
t->next[k]=NULL;
}
t->flag=0;//标记
s->next[str[j]-'0']=t;//以这个字母为根,展开到下一层
s=t;
}
s->flag=1;//以当前层结束的单词存在
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator