http://acm.hdu.edu.cn/showproblem.php?pid=1800
字典树
#include<iostream> #include<string.h> #include<stdio.h> using namespace std; struct node { int sum; node *next[10]; node() { sum=0; memset(next, NULL, sizeof(next)); }; }; int ans; char *Delleading0(char *s) { while(*s==‘0‘) s++; while(*s==0) s--; return s; } void Buildtiretree(node *head, char *s) { node *p=head; 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->sum++; if(p->sum>ans) ans=p->sum; } int main() { char *s, str[35]; int n; while(scanf("%d", &n)!=EOF) { ans=0; node *head=new node(); //getchar(); while(n--) { //gets(str); scanf("%s", str); s=Delleading0(str); Buildtiretree(head, s); } printf("%d\n", ans); } return 0; }
时间: 2024-10-08 03:27:50