程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu 1004 trie樹

hdu 1004 trie樹

編輯:C++入門知識

這道題其實很簡單,直接開數組或者用map映射也好,為了練習trie樹,我就用trie來做了,而且用動態申請內存,無聊的我啊   [cpp]   /*****************************************************************      > File Name: t.c      > Author: Lobo Chim      > Created Time: 2013年01月24日 星期四 13時09分33秒   ****************************************************************/      #include <stdio.h>   #include <string.h>      #define CN 26      typedef struct node   {       struct node *child[CN];       int count;       char s[16];       node()       {           count=0;           int i;           for(i=0;i<CN;i++)               child[i]=NULL;       }   }NODE;      void insert(NODE *root,const char *str)   {       int len=strlen(str);       int i;       NODE *cur=root;       for(i=0;i<len;i++)       {               if(cur->child[str[i]-'a']!=NULL)               {                   cur=cur->child[str[i]-'a'];               }               else               {                   cur->child[str[i]-'a']=new NODE;                    cur=cur->child[str[i]-'a'];               }       }       strcpy(cur->s,str);       cur->count++;   }      void dfs(const NODE * root,char * &str,int &max)   {       int i,temp;       for(i=0;i<CN;i++)       {           if(root->count > max)           {               max=root->count;               str=(char *)root->s;           }           if(root->child[i])           dfs(root->child[i],str,max);       }   }      void del(NODE *root)   {       int i;       for(i=0;i<CN;i++)           if(root->child[i])               del(root->child[i]);       delete root;       root=NULL;   }      int main()   {       int Case;       while(scanf("%d",&Case)!=EOF && Case )       {           int i;           char s[16];           NODE *root=new NODE;           for(i=0;i<Case;i++)           {               scanf("%s",s);               insert(root,s);           }           char *p;           int max=0;           dfs(root,p,max);           printf("%s\n",p);           del(root);       }       return 0;   }      

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved