hdu 1671 Phone List(二叉树)
来源:互联网 发布:2017淘宝网下载 编辑:程序博客网 时间:2024/06/04 19:52
题目连接:hdu 1671 Phone List
题目大意:给出n个电话号码,判断是否存在某个电话号码是另外一个电话号码的前缀。
解题思路:建一个二叉树进行搜索时的优化。
#include <stdio.h>#include <string.h>#define min(a,b) (a)<(b)?(a):(b)const int N = 50;int n, flag;struct node {char name[N];node *l, *r;node() { memset(name, 0, sizeof (name));l = r = NULL; }};void del(node* p) {if (p->l != NULL) del(p->l);if (p->r != NULL) del(p->r);delete p;}void insert(node* p, char tmp[]) {int len = min(strlen(p->name), strlen(tmp));if (strncmp(p->name, tmp, len) == 0)flag = 1;else if (strcmp(p->name, tmp) > 0) {if (p->l == NULL) {p->l = new node;strcpy(p->l->name, tmp);}elseinsert(p->l, tmp);}else if (strcmp(p->name, tmp) < 0) {if (p->r == NULL) {p->r = new node;strcpy(p->r->name, tmp);}else insert(p->r, tmp); }}int main () {int cas;char tmp[N];scanf("%d", &cas);while (cas--) {node* top = NULL;flag = 0;scanf("%d", &n);for (int i = 0; i < n; i++) {scanf("%s", tmp);if (!flag) {if (top == NULL) {top = new node;strcpy(top->name, tmp);}elseinsert(top, tmp);}}printf("%s\n", flag ? "NO" : "YES");del(top);}return 0;}
- hdu 1671 Phone List(二叉树)
- hdu 1671 Phone List(字典树)
- HDU-#1671 Phone List(字典树)
- hdu 1671 Phone List(Trie树)
- hdu 1671 phone list(字典树)
- HDU 1671 Phone List(字典树)
- HDU 1671 Phone List(字典树)
- HDU 1671 Phone List(字典树)
- HDU 1671 Phone List(字典树)
- HDU 1671 Phone List (字典树)
- HDU 1671 Phone List(字典树)
- hdu 1671 Phone List(字典树)
- HDU 1671 Phone List(Trie树)
- HDU 1671 Phone List (字典树)
- HDU 1671 Phone List(字典树)
- hdu 1671 Phone List(字典树)
- HDU 1671 Phone List(字典树)
- HDU 1671 Phone List 二叉树水题 数组建树法
- iPhone开发中的技巧整理
- ref参数和out参数
- 项目计划
- IOS 文件操作
- POJ.Fermat vs. Pythagoras
- hdu 1671 Phone List(二叉树)
- 函数堆栈
- Leetcode: N-Queens II
- MarkdownPad使用心得小窍门--> 开源code编辑工具
- VS2010 C++编译报错LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- oracle 最基本命令
- ubuntu12.04安装java6,验证可用
- SDL 和SDL_TTF 联合实现 Video Player 加OSD
- java中print,printf,println区别