题目就是间接的让你翻译单词的,输入的每一行有两个单词,其中有一个可以认为是字典,另一个就是要翻译成的单词了
可能是我想的复杂了,我是用trie树做的。先定义一个结构体,存储输入的字符串
1 #include2 #include 3 #include 4 #define N 20 5 #define M 100001 6 using namespace std; 7 struct node 8 { 9 int k; 10 node *key[26]; 11 node() 12 { 13 for(int i=0;i<26;i++) 14 key[i]=NULL; 15 k=0; 16 } 17 }; 18 struct str 19 { 20 char s[N]; 21 char b[N]; 22 }a[M]; 23 node *root; 24 void insert(char *S,int n) 25 { 26 int i,len=strlen(S),t; 27 node *p; 28 p=root; 29 for(i=0;i key[t] != NULL) 33 p = p->key[t]; 34 else 35 { 36 p->key[t] = new node; 37 p = p->key[t]; 38 } 39 } 40 p->k=n; //这里将字符串的位置标记下来,便于查找的时候输出另个单词 41 } 42 int find(char *S) 43 { 44 int i,len = strlen(S),t; 45 node *p; 46 p = root; 47 for(i = 0;i < len;i ++) 48 { 49 t = S[i] - 'a'; 50 if(p->key[t] != NULL) p = p->key[t]; 51 else return -1; 52 } 53 return p->k; 54 } 55 int main() 56 { 57 int i; 58 root = new node; //这里也要注意,老是忘记申请空间 59 char t[100]; 60 i=0; 61 while(gets(t)&&strcmp(t,"")) 62 { 63 sscanf(t,"%s%s",a[i].s,a[i].b); 64 //cout< < >t) 69 { 70 //cout< <