我叫张小黑
张小黑的挣扎生活
posts - 66,  comments - 109,  trackbacks - 0
这道题简单,1Y,开始delete()是用的~trie中写的,0ms,但是内存很大
我以为是trie中的空间没释放掉,所以改用了递归删除,结果500ms,差距阿,以后要注意了
写这道题主要是复习一下,以下是代码,比以前写的简化了很多
#include<iostream>
#include
<algorithm>
#define MaxN 
26
const char stdt='a';
using namespace std;
struct trie
{
    trie
* next[MaxN];
    
int val;
    trie()
    {
        
int i;
        
for(i=0;i<MaxN;i++)next[i]=0;
        val
=0;
    }
    ~trie()
    {
        
int i;
        
for(i=0;i<MaxN;i++)delete(next[i]);
    }
};
int main()
{
    char words[
12],*t;
    
int ans;
    trie
* root=new trie,*p;
    
while(gets(words)&&strcmp(words,"")){
        p
=root;
        t
=words;
        
while(*t){
            
if(p->next[*t-stdt]==0)
                p
->next[*t-stdt]=new trie;
            p
=p->next[*t-stdt];
            (p
->val)++;
            t
++;
        }
    }
    
while(scanf("%s",words)!=EOF){
        p
=root;
        t
=words;
        
while(*t){
            
if(p->next[*t-stdt]==0){
                ans
=0; break;}
            p
=p->next[*t-stdt];
            ans
=p->val;
            t
++;
        }
        printf(
"%d\n",ans);
    }
    return 
0;
}
posted on 2008-05-07 20:32 zoyi 阅读(409) 评论(0)  编辑 收藏 引用 所属分类: acm数据结构

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


欢迎光临 我的白菜菜园

<2008年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(8)

随笔分类

随笔档案

文章档案

相册

acmer

online judge

队友

技术

朋友

搜索

  •  

最新评论

阅读排行榜

评论排行榜