博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 3630 简单Trie树的应用
阅读量:6983 次
发布时间:2019-06-27

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

     学了Trie树(学习Trie树相关的内容,!),来做这题,感觉挺简单的,边输入边判断是否存在是否有前缀(prefix),这样的话要考虑两种情况,一种是前面的某个串是该串的前缀,或者该串是前面某个串的前缀。   写完,提交,TLE!!原来不能用动态建树的方法,必须用静态树! 后来再提交,WA。。。哎。纠结死我了。跟别人的对比了下,觉得自己的也没错啊...真不知道错在哪了。下面贴出代码,求大牛指导! 最后看了discuss里面前辈给出的程序,把自己的改了下,是先排序,然后再Insert,这样可以少考虑一种情况。然后再把静态树的数组开大点,不然还是会WA的!最后终于AC了。

AC代码:

#include 
#include
#include
using namespace std;char str[10001][11];const int sunnum=10,base='0';struct Trie{ bool terminal; //int num; Trie *sun[sunnum];}node[1000000];struct Phone{ char num[11]; int len; friend bool operator<(const Phone &a,const Phone &b) { return a.len
sun[i]=NULL; } temp->terminal=false; return temp;}void Insert(Trie *root,Phone cur){ Trie *temp=root; for(int i=0; i
sun[k]==NULL) temp->sun[k]=NewTrie(); else { if(temp->sun[k]->terminal==true) //排序后只需处理这一种情况 即前面的串是后面的串的prefix { //return true; result=false; } } temp=temp->sun[k]; } temp->terminal=true;}int main(){ int t,n,i; freopen("acm.txt","r",stdin); scanf("%d",&t); while(t--) { Trie *root=NewTrie(); scanf("%d",&n); for(i=0; i

 

我纠结了好久,但总是WA的代码。求大神指导!他们说的这组数据我也测试通过了。有没有其他的数据来测试呢?

2

2
1
12
2
12
1

#include 
#include
#include
using namespace std;char str[10001][11];const int sunnum=10,base='0';struct Trie{ bool terminal; //int num; Trie *sun[sunnum];}node[1000000];int x=0;bool result;Trie *NewTrie(){ Trie* temp=node+x++; for(int i=0; i<10; i++) { temp->sun[i]=NULL; } temp->terminal=false; return temp;}bool Insert(Trie *root,char*s){ Trie *temp=root; while(*s) { int k=*s-base; if(*(s+1)=='\0' && temp->sun[k]!=NULL) //该串是前面某个串的前缀 { return true; } if(temp->sun[k]==NULL) temp->sun[k]=NewTrie(); else { //temp->sun[*s-base]->num++; if(temp->sun[k]->terminal==true) //别的字符串是该字符串的前缀 { return true; } } temp=temp->sun[k]; s++; } temp->terminal=true; return false;}int main(){ int t,n,i; freopen("acm.txt","r",stdin); scanf("%d",&t); while(t--) { Trie *root=NewTrie(); scanf("%d",&n); for(i=0; i

 

 

转载地址:http://bitpl.baihongyu.com/

你可能感兴趣的文章
重学前端-js的类型问题
查看>>
Function类型
查看>>
Python学习
查看>>
ES6之let和const
查看>>
关于跨域
查看>>
一个半路出家的前端工程师的2018 | 掘金年度征文
查看>>
Fork/Join 框架介绍
查看>>
5.6 前端开发日报
查看>>
面试官:聊一下你对MySQL索引实现原理?
查看>>
[译]Go如何优雅的处理异常
查看>>
数据格式校验
查看>>
Django搭建个人博客:上传头像图片
查看>>
Docker与自动化测试及其测试实践
查看>>
Java-集合的简单介绍
查看>>
分布式架构发展
查看>>
针对不同的系统的宏定义
查看>>
十分钟熟练Dockerfile指令
查看>>
ES6新特征总结与介绍——声明与表达式
查看>>
python3实现抓取网页资源的 N 种方法(内附200GPython学习资料)
查看>>
不用软件,手动修复双系统引导进win7,xp的多种方法
查看>>