【字典树】HDU1671Phone List(论释放内存的重要性)
来源:互联网 发布:婚纱摄影网络销售技巧 编辑:程序博客网 时间:2024/04/30 11:06
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1671
一道简单的模板题,但是这个题目是多组数据。所以如果你不释放内存,很有可能你就会MLE到死。。。orz....
增加一个释放内存的函数就可以轻松搞定了。不过最好还是能够养成这样一个习惯,那就是在使用数据结构的指针是,每次都能够释放。
#include<iostream>#include<string>#include<cstdio>#include<cstring>#include<stdlib.h>using namespace std;const int N=10;char s[10002][11];struct node{ bool flag; node *next[N]; node(){ flag=false; memset(next,0,sizeof(next)); }};node *p,*head=new node();void Insert(char s[]){ p=head; int i=0; while(s[i]){ int id=s[i++]-'0'; if(p->next[id]==NULL) p->next[id]=new node(); p=p->next[id]; } p->flag=true;}bool Query(char s[]){ p=head; int i=0; while(s[i]){ int id=s[i++]-'0'; if(p->next[id]==NULL) return false; if(p->flag) return true; p=p->next[id]; } return false;}int deal(node* T) // 释放内存空间,尤为重要。{ int i; for(i=0;i<=9;i++) { if(T->next[i]!=NULL) deal(T->next[i]); } free(T); // 头文件 "stdlib.h" return 0;}int main(){ int t,n,i; cin>>t; while(t--){ cin>>n; head=new node(); for(i=0;i<n;i++){ cin>>s[i]; Insert(s[i]); } for(i=0;i<n;i++){ if(Query(s[i])){ printf("NO\n"); break; } } if(i==n) printf("YES\n"); deal(head); } return 0;}
0 0
- 【字典树】HDU1671Phone List(论释放内存的重要性)
- hdu1671Phone List - 字典树
- hdu1671Phone List-字典树
- hdu1671Phone List(字典树模板)
- hdu1671Phone List(字典树---判断有无相同的前缀单词)
- HDU 1671 Phone List (字典树+释放内存)
- hdu1671Phone List
- HDU1671Phone List
- 经验总结25--释放内存的重要性
- HDU 1761—简单的字典树,需要释放内存
- 再谈字典树:HDOJ 1671 Phone List(内存释放)
- hdu 1250 字典树+内存释放
- HDU 1671 字典树+释放内存
- 有关 list 内存释放的小技巧
- 有关 list 内存释放的小技巧
- hdu1671Phone List(Trie tree)
- HDOJ 1671 Phone List (字典树+释放空间)
- hdu1671-每个字典树都应该释放内存
- 奇异值分解压缩图像SVD
- Leetcode || Count and Say
- 顺序表应用4:元素位置互换之逆置算法
- 使用ngin实现tomcat6和iis共用80端口
- NSDate/NSData
- 【字典树】HDU1671Phone List(论释放内存的重要性)
- 怎样实现android 返回到上一个Activity并重新执行一次onCreate方法
- 被误解的MVC和被神化的MVVM
- 顺序表应用5:有序顺序表归并
- swift学习Day05
- 最简单的视频网站(JavaEE+FFmpeg)
- Nginx配置文件nginx.conf中文详解
- java web servlet配置
- 代码块