标签:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1800
4 10 20 30 04 5 2 3 4 3 4
1 2
/*士兵要学骑扫帚。每个士兵有一个level, level高的能在同一把扫帚上教level低的怎么骑。 一个人最多有一个老师,一个学生。也可以没有。 给n个士兵的level值,问最少需要多少扫帚。*/ #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; struct node { node *next[10]; int Count; node() { for (int i=0; i<10; i++) next[i]=NULL; Count=0; } }; int Max; node *p,*root; void Insert(char *s) { p=root; for (int i=0; s[i]; i++) { int k=s[i]-'0'; if (p->next[k]==NULL) p->next[k]=new node(); p=p->next[k]; } p->Count++; if (p->Count>Max) Max=p->Count; } /*void Search(int *s) { p=root; for (int i=0;i<n;i++) { int k=s[i]-'0'; if (p->next[k]==NULL]) return ; p=p->next[k]; } }*/ int main() { int n,j; char ch[40]; while (~scanf("%d",&n)) { root=new node(); Max=0; for (int i=0; i<n; i++) { scanf("%s",ch); int len=strlen(ch); for (j=0; j<len; j++) { if (ch[j]!='0') break; } Insert(ch+j); } printf ("%d\n",Max); } return 0; }
hdu1800 Flying to the Mars(字典树)
标签:
原文地址:http://blog.csdn.net/qiqi_skystar/article/details/47950707