hdu 1075 (字典树映射)
2011-01-16 16:17
309 查看
/* 问题:输入一段英文,对照给的单词的映射,输出映射后的字符串 YY :典型的字典树问题,先处理好映射表,在一映射单词结尾处记录与之对应的单词, 后面字符串处理一下,单个单词进行查,找到后输出,没有输出原始词 刚开始交RE越界,不解,觉得是指针问题,但找不出错处 后来找到个神奇数据后改过就A了 /* START dog aa END START a aa END */ */ #include <stdio.h> #include <string.h> #include <stdlib.h> struct node { struct node *child[26]; char *str; }; struct node *root = new struct node; void Init() { for(int i =0;i <26; i++) root->child[i] = 0; } void Insert(char *c1,char *c2) { int len = strlen(c2); struct node *cur; cur = root; for(int i =0;i <len;i ++){ if(cur ->child[c2[i] - 'a'] != 0){ cur = cur ->child[c2[i] - 'a']; } else{ struct node *newnode = new struct node; cur ->child[c2[i] - 'a'] = newnode; for(int j =0; j <26; j++){ newnode ->child[j] = 0; } newnode ->str = NULL; //相当重要啊!!!!! cur = newnode; } } cur->str = (char *)malloc(15 * sizeof(char)); strcpy(cur->str, c1); } void Print(char *c2) { int len = strlen(c2); struct node *cur; cur = root; if(!len) return ; for(int i =0;i <len; i++){ if(c2[i] < 'a' || c2[i] > 'z' || cur ->child[c2[i] - 'a'] == 0){ printf("%s",c2); return ; } else{ cur = cur ->child[c2[i] - 'a']; } } if(cur ->str != NULL) printf("%s",cur ->str); else printf("%s",c2); } int main() { char s[15],temp[3005],c1[15],c2[15]; Init(); scanf("%s", temp); while(scanf("%s", c1) && strcmp(c1, "END")!=0){ scanf("%s", c2); Insert( c1, c2); } scanf("%s", temp); getchar(); while(gets(temp) && strcmp(temp,"END")!=0) { int len = strlen(temp); int start = -1, end = 0; int num = 0; for(int i =0; i<len; i++){ if(temp[i] >= 'a' && temp[i] <= 'z'){ if(start == -1){ start = i; } s[num++] = temp[i]; } else{ if(start > -1){ start = -1; s[num] = '\0'; num = 0; Print(s); } printf("%c", temp[i]); } } if(start > -1) ////***********在此,我不给力!!!!******************** { s[num] = '\0'; Print(s); if(temp[len - 1] < 'a' || temp[len - 1] > 'z') printf("%c", temp[len - 1]); } printf("\n"); } return 0; }
相关文章推荐
- hdu 1075(字典树)
- HDU - 1075 - What Are You Talking About(字典树)
- hdu 1075 字典树 和 map做法
- hdu 1075 What Are You Talking About(字典树)
- HDU-1075 What Are You Talking About 字典树
- hdu 1075 What Are You Talking About (字典树)
- hdu 1075 What Are You Talking About 字典树(静态版)
- HDU 1075 What Are You Talking About (字典树)
- HDU - 1075 What Are You Talking About(字典树)
- hdu--1075--(字典树一般)
- What Are You Talking About (HDU_1075) 字典树
- hdu 1075 What Are You Talking About (字典树)
- hdu 1075 字典树
- hdu 1075 What Are You Talking About(字典树)
- HDU 1075 What Are You Talking About(字典树)
- hdu1075 字典树
- HDU 1075 字典树 字符串匹配
- HDU 1075 What Are You Talking About(字典树)
- hdu 1075 字典树
- HDU 1075(简单字典树)