《字典树&stl map的使用》hdu acm 5.2.1 字典树&链表&stl map的使用

#include <iostream>
char str[12]; using namespace std; const int maxn=26; struct node { int cnt;
	node *next[maxn]; };
node root; void createtrie(char *str) { int len=strlen(str); int i,id,j;
	node *p=&root;
	node *q; for(i=0;i<len;i++) {
		id=str[i]-'a'; if(p->next[id]==NULL) {
			q=(node*)malloc(sizeof(node));
			q->cnt=1; for(j=0;j<maxn;j++) {
				q->next[j]=NULL; }
			p->next[id]=q;
			p=p->next[id]; } else {
			p->next[id]->cnt++;
			p=p->next[id]; } } } int find(char *str) { int len=strlen(str); int i,id;
	node *p=&root; for(i=0;i<len;i++) {
		id=str[i]-'a';
		p=p->next[id]; if(p==NULL) return 0; } return p->cnt; } int main() { while(gets(str)&&str[0]!='\0') {
        createtrie(str); } while(scanf("%s",str)!=EOF) {
		printf("%d\n",find(str)); } return 0; }
 
 
 
 
 
#include <iostream> #include <map> #include <cstring> #include <string> using namespace std; int main() { int i, len; char str[10]; map<string, int> m; while( gets(str) ) { len = strlen(str); if ( !len ) { break; } for(i = len; i > 0; i--) { str[i] = '\0'; m[str]++; } } while( gets(str) ) { cout << m[str] << endl; } return 0; } 

你可能感兴趣的:(《字典树&stl map的使用》hdu acm 5.2.1 字典树&链表&stl map的使用)