博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1671(Phone List)
阅读量:4987 次
发布时间:2019-06-12

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

题目链接地址:

动态分配内存,当实例较多时需释放内存,不然会超空间

#include
#include
#include
using namespace std;#define maxn 10001char s[maxn][11];struct Trie{ Trie *next[10]; Trie() { memset(next,0,sizeof(next)); }};void Insert(Trie *root,char s[]){ Trie *p = root; for(int i = 0; i < strlen(s); i++) { int j = s[i] - '0'; if(p->next[j] == NULL) p->next[j] = new Trie(); p = p->next[j]; } }bool Find(Trie *root,char s[]){ Trie *p = root; for(int i = 0; i < strlen(s); i++) { int j = s[i] - '0'; if(p->next[j] == NULL) return false; p = p->next[j]; } for(int k = 0 ;k < 10; k++) if(p->next[k] != NULL) return true; return false;}void Delete(Trie *root) //释放内存{ for(int i=0;i<10;i++) { if(root->next[i]!=NULL) Delete(root->next[i]); delete root->next[i]; root->next[i]=NULL; }} int main(){ //freopen("1005.txt","r",stdin); int i,t,n; cin >> t; while(t--) { Trie *root = new Trie(); cin >> n; for(i = 0; i < n; i++) { scanf("%s",s[i]); Insert(root,s[i]); } for(i = 0; i < n; i++) if(Find(root,s[i])) { cout << "NO" << endl; break; } if(i == n) cout << "YES" << endl; Delete(root); } return 0;}

 

转载于:https://www.cnblogs.com/sorryhao/archive/2012/10/28/2743549.html

你可能感兴趣的文章
java根据图片和文字生成自定义图片
查看>>
《ASP.NET SignalR系列》第五课 在MVC中使用SignalR
查看>>
我要回家-割舍不断的亲情
查看>>
Catenyms (POJ2337) 字典序最小欧拉路
查看>>
ZT : 优秀程序员的两大要素:懒 + 笨
查看>>
Centos6.5-dnsmasq安装
查看>>
PyCharm+Eclipse共用Anaconda的数据科学环境
查看>>
笔记3 | 通过onWindowAttributesChanged和onSystemUiVisibilityChange监听状态栏页面的隐藏与显示、动态显示与隐藏状态栏...
查看>>
msysgit 上传文件夹,规范化的日常
查看>>
CSS清除浮动
查看>>
Zookeeper之ZKClient的使用
查看>>
WTF小程序之animation
查看>>
那些前端二进制操作API
查看>>
一 、Spring Boot 学习之项目搭建
查看>>
一键部署joomla开源内容管理平台
查看>>
opencv画图
查看>>
Python-爬虫-12306购票业务实现
查看>>
010. windows10下安装kivy 1.9.1版
查看>>
AS3.0判断数组中最大值
查看>>
系统融合方案
查看>>