标签:cat create start leave color find strcmp 使用 null
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/204800 K (Java/Others)
Total Submission(s): 24624 Accepted Submission(s): 8280
#include <cstdio> #include <iostream> #include <cstring> #include <map> using namespace std; map<string,string>mp; char str1[15]; char str2[15]; char str[3100]; char res[3100]; int len; int main() { scanf("%s",str1); while(scanf("%s",str1)!=EOF) { if(!strcmp(str1,"END")) break; scanf("%s",str2); mp[str2]=str1; // cout<<mp[str2]<<endl; } getchar(); gets(str); while(gets(str)) { if(!strcmp(str,"END")) break; int l=0; int r=0; for(int i=0;i<strlen(str);i++) { if(str[i]>=‘a‘&&str[i]<=‘z‘) res[l++]=str[i]; else { res[l]=0; if(mp.find(res)!=mp.end()) //如果mp中不存在该元素,mp.find()==mp.end() cout<<mp[res]; else printf("%s",res); printf("%c",str[i]); l=0; } } printf("\n"); } return 0; }
#include <cstdio> #include <iostream> #include <cstring> using namespace std; const int MAXN=26; typedef struct Trie{ char* v; Trie *next[MAXN]; }Trie; Trie *root; void createTrie(char *str,char *str2) { int len=strlen(str); Trie *p=root,*q; for(int i=0;i<len;i++) { int id=str[i]-‘a‘; if(p->next[id]==NULL) { q=(Trie*)malloc(sizeof(Trie)); for(int j=0;j<MAXN;j++) q->next[j]=NULL; q->v=NULL; p->next[id]=q; p=p->next[id]; } else { p=p->next[id]; } } p->v=new char[11]; //给指针v分配一个长度为10的字符串 strcpy(p->v,str2); } char* findTrie(char *str) { int len=strlen(str); Trie *p=root; for(int i=0;i<len;i++) { int id=str[i]-‘a‘; p=p->next[id]; if(p==NULL) return 0; } return p->v; } int deal(Trie *T) { int i; if(T==NULL) return 0; for(int i=0;i<MAXN;i++) { if(T->next[i]!=NULL) deal(T->next[i]); } free(T); return 0; } char str1[15]; char str2[15]; char str[3100]; char res[3100]; int len; char *q; int main() { root=(Trie*)malloc(sizeof(Trie)); for(int i=0;i<MAXN;i++) root->next[i]=NULL; root->v=NULL; scanf("%s",str1); while(scanf("%s",str1)!=EOF) { if(!strcmp(str1,"END")) break; scanf("%s",str2); createTrie(str2,str1); // cout<<mp[str2]<<endl; } getchar(); gets(str); while(gets(str)) { if(!strcmp(str,"END")) break; int l=0; int r=0; for(int i=0;i<strlen(str);i++) { if(str[i]>=‘a‘&&str[i]<=‘z‘) res[l++]=str[i]; else { res[l]=0; q=findTrie(res); if(q) { printf("%s",q); } else printf("%s",res); printf("%c",str[i]); l=0; } } printf("\n"); } deal(root); return 0; }
HDU 1075 What Are You Talking About(map或字典树)
标签:cat create start leave color find strcmp 使用 null
原文地址:http://www.cnblogs.com/a249189046/p/7468557.html