Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
用二叉搜索树终于过了。。。不过时间还是不够快。。。贴代码傻一下。。。#include<cstdio> #include<cstring> #define N 13 bool flag; char a[N], b[N],c[N]; typedef struct node { char pre[N]; char s[N]; node *left; node *right; } BST; BST *creat_tree(BST *p, char* str1, char* str2) { if (p == NULL) { p = new BST(); strcpy(p->pre, str1); strcpy(p->s, str2); p->left = NULL; p->right = NULL; } else { if (strcmp(str2, p->s) > 0) { p->right = creat_tree(p->right, str1, str2); } else { p->left = creat_tree(p->left, str1, str2); } } return p; } void print(BST *p, char *a) { if (p) { if (strcmp(p->s, a) == 0) { flag = true; printf("%s\n", p->pre); return; } else if (strcmp(p->s, a) > 0) print(p->left, a); else print(p->right, a); } } int main() { BST *root = NULL; while (gets(a)) { if(strcmp(a,"")==0) break; int i; for(i = 0;a[i]!=' ';i++) c[i] = a[i]; i++; c[i] = '\0'; int t = i; for(;i<strlen(a);i++) b[i-t] = a[i]; b[i - t] = '\0'; //printf("%s\n%s\n",c,b); root = creat_tree(root, c, b); } while (scanf("%s", a) != EOF) { flag = false; print(root, a); if(!flag) printf("eh\n"); } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator