题意就是先输入一个字典: 目标字符串-----输入字符串
然后输入一个字符串,在上面的对应关系中进行查找,如果有则输出目标字符串,没有则输出eh。
如果不想超时的话,明显就要套字典树了。
代码贴上来,留作模板。字典树还是挺简单易懂的嘛。。。
#include#include #include #include using namespace std;const int num_char=26;struct TrieNode{ TrieNode* branch[num_char]; char data[12];};TrieNode head;int insert(const char *des,const char *src){ TrieNode *hp=&head; while(*src!=0) { if((hp->branch[*src-'a'])==NULL)hp->branch[*src-'a']=new TrieNode(); hp=hp->branch[*src-'a']; src++; } // if((hp->data)==NULL)hp->data=new char[strlen(des)+1]; strcpy(hp->data,des); return 0;}bool search(const char *str,char *entry){ TrieNode* t=&head; while(*str!=0) { if((t->branch[*str-'a'])==NULL)return false; t=(t->branch[*str-'a']); str++; } strcpy(entry,t->data); return true;}int main(){ char t[40]; while(gets(t)) { char src[12],des[12]; if(t[0]=='\0')break; sscanf(t,"%s %s",des,src); insert(des,src); } char consult[12]; while(scanf("%s",consult)!=EOF) { char entry[12]; if(search(consult,entry)) printf("%s\n",entry); else printf("eh\n"); } return 0;}