博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 11362 - Phone List
阅读量:6857 次
发布时间:2019-06-26

本文共 1279 字,大约阅读时间需要 4 分钟。

题目:给你一组电话号码,推断是否有一些号码是其它的前缀(或相等)。

分析:字符串。字典树。利用字典树储存查询就可以,注意两种情况处理:

            1.先短后长(前缀在前);2.先长后短(前缀在后)。

说明:第580题了,目标600╮(╯▽╰)╭。

#include 
#include
#include
#include
#include
#include
using namespace std;#define nodesize 100001 //节点个数 #define dictsize 128 //字符集大小 //trietypedef struct node1 { int flag; //值域 node1* next[dictsize]; }tnode; tnode dict[nodesize]; class Trie { private: int size; tnode* root; public: Trie() {initial();} void initial() { memset(dict, 0, sizeof(dict)); size = 0; root = newnode(); } tnode* newnode() {return &dict[size ++];} int insert(char* word) { tnode* now = root; for (int i = 0 ; word[i] ; ++ i) { if (!now->next[word[i]]) now->next[word[i]] = newnode(); now = now->next[word[i]]; if (now->flag) return 1; }now->flag = 1; for (int i = 0 ; i < dictsize ; ++ i) if (now->next[i]) return 1; return 0; }}trie; //trie endint main(){ int t,n; char buf[12]; while (~scanf("%d",&t)) while (t --) { trie.initial(); scanf("%d",&n); int flag = 0; for (int i = 0 ; i < n ; ++ i) { scanf("%s",buf); if (trie.insert(buf)) flag = 1; } if (flag) printf("NO\n"); else printf("YES\n"); } return 0;}

转载于:https://www.cnblogs.com/gavanwanggw/p/6853393.html

你可能感兴趣的文章
前端开发的历史和趋势(转摘阮一峰)
查看>>
Ubuntu 削减非 LTS 支持周期
查看>>
_实用的cms企业后台管理模板
查看>>
菜鸟看Redis(一)
查看>>
matplotlib.pyplot.plot()参数详解
查看>>
||PHP||关于=>和->以及::的用法
查看>>
最短路径问题
查看>>
Yii2中定义自己的Widget
查看>>
Aforge.net识别简易数字验证码问题
查看>>
JVM系列二:GC策略&内存申请、对象衰老
查看>>
MySQL 数据库备份策略:全备与增量备份
查看>>
Springboot的热部署
查看>>
Thinking in UML-1-为什么需要UML
查看>>
vs编译obj给delphi用
查看>>
过游戏保护NP或TP的几种方法和思路
查看>>
equals和hashcode为什么要一起重写
查看>>
模态与非模态对话框的问题
查看>>
httpclient 备注 控制连接时间及多线程错误
查看>>
地对地导弹地对地导弹地对地导弹
查看>>
浏览器根对象window之performance
查看>>