HihoCoder第二周与POJ3630:Trie树的建立
这又是两道一样的题,都是建立trie树的过程。
HihoCoder第二周:
这里其实逻辑都很简单,主要在于数据结构struct的使用。
#include <iostream>
#include <cstring>
using namespace std; struct node{
int get;
node *branch[26];
}; node* create()
{
node* tnew = (node *)malloc(sizeof(node)); tnew->get = 0; for(int i = 0;i < 26 ;i++)
{
tnew->branch[i] = NULL;
}
return tnew;
} int main()
{
long n,m;
char str[35];
int len,i; cin>>n; node* root = create(); node* temp = NULL; while(n--)
{
cin>>str; len = strlen(str); temp = root; for(i=0;i< len;i++)
{
if(NULL==temp->branch[str[i]-'a'])
{
temp->branch[str[i]-'a']=create();
}
temp->branch[str[i]-'a']->get++;
temp = temp->branch[str[i]-'a'];
} } cin>>m;
while(m--)
{
cin>>str; len = strlen(str); temp = root; for(i=0;i<len;i++)
{
temp = temp->branch[str[i]-'a'];
if(temp==NULL)
{
break;
}
}
if(temp==NULL)
cout<<0<<endl;
else
cout<<temp->get<<endl;
} return 0;
}
POJ3630:
POJ这里的话,有一点变化,就是不能用动态建立树,会超时。另外一点初始化,我之前一直没把child初始化为NULL,导致被坑了很多次。
#include <iostream>
#include <cstring>
using namespace std; struct node{
int get;
node *child[10];
}Node[100005]; void start()
{
int i;
node* temp;
for(i=0;i<100005;i++)
{
temp=&Node[i];
temp->get=0;
for(int j =0;j<10;j++)
temp->child[j]=NULL;
}
}
int nodenum=1; int test(char str[])
{
int len = strlen(str); node* root = &Node[0];
node* temp = root; for(int i=0; i<len; i++)
{ if(i==len-1)
{
if (temp->child[str[i]-'0']!=NULL)
{
return 0;
}
else
{
temp->child[str[i]-'0']= &Node[nodenum++]; temp->child[str[i]-'0']->get++;
}
}
else
{
if(temp->child[str[i]-'0']==NULL)
{
temp->child[str[i]-'0']=&Node[nodenum++];
}
else
{
if(temp->child[str[i]-'0']->get!=0)
{
return 0;
}
}
temp=temp->child[str[i]-'0'];
}
}
return 1;
} int main()
{
int m,n;
int flag=1,flag2=1;
char str[35]; cin>>m; while(m--)
{
cin>>n;
start();
nodenum=1;
flag=1;flag2=1;
while(n--)
{
cin>>str;
flag =test(str); if(flag==0)
flag2=0;
}
if(flag2)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
} return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
HihoCoder第二周与POJ3630:Trie树的建立的更多相关文章
- POJ3630(Trie树)
Phone List Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 26385 Accepted: 7957 Descr ...
- trie树的建立方法汇总
方法一:孩子兄弟表示法 即对于某一个点,记录他的第一个孩子以及他的同父亲的下一个儿子. 具体代码如下: #include <cstdio> #include <cstring> ...
- hiho一下 第二周 trie树
Trie树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路 ...
- hihoCoder #1014 : Trie树 [ Trie ]
传送门 #1014 : Trie树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互 ...
- 1014 : Trie树 hihocoder
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进. ...
- #1014 : Trie树 HihoCoder(字典树)
描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进. 这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题: ...
- hihoCoder 1014 Trie树 (Trie)
#1014 : Trie树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 小Hi和小Ho是一对好朋友.出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮 ...
- Hihocoder #1014 : Trie树 (字典数树统计前缀的出现次数 *【模板】 基于指针结构体实现 )
#1014 : Trie树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助, ...
- hihoCoder 1014 : Trie树(字典树)
传送门 Description 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进. 这一天,他们遇到了一本词典,于是小Hi就向小 ...
随机推荐
- 解决xpath中文乱码
利用xpath建标签树以后,虽然提高了元素匹配效率,但是etree会把中文转为ASCII码,所以简单地tostring以后会有乱码. 解决方法: import requests from reques ...
- Cosmetic Sprayer Structure Anatomy
What shape of spray is sprayed by the cosmetic spray pump head? Plastic Sprayers Manufacturer ...
- python中 with 的作用
with是 Python2.5 引入的一个新语法,它是一种上下文管理协议,目的在于从流程中吧 try...except 和 finally 关键字和资源释放相关代码统统去掉,简化 try...exce ...
- PAT T1002 Business
背包问题,把任务按截止日期排序,再按背包问题处理~ #include<bits/stdc++.h> using namespace std; ; struct node { int c; ...
- IDEA中使用Lombok插件简化实体类的编写
版本:IDEA Community 2019.2.2 流程:安装lombok插件并安装,重启=>在pom文件中加入 <dependency> <groupId>org.p ...
- 吴裕雄--天生自然PYTHON爬虫:使用Selenium爬取大型电商网站数据
用python爬取动态网页时,普通的requests,urllib2无法实现.例如有些网站点击下一页时,会加载新的内容,但是网页的URL却没有改变(没有传入页码相关的参数),requests.urll ...
- Java面向对象编程 -1.2
类与对象简介 类是某一类事物的共性的抽象概念 而对象描述的是一个具体的产物 类是一个模板,而对象才是类可以使用的实例,先有类再有对象 在类之中一般都会有两个组成: 成员属性(Filed) :有些时候为 ...
- java记录1--接口
接口(interface)定义:抽象方法和常量值的集合.本质上讲,接口是一种特殊的抽象类 ps:1.接口中定义的属性必须是public static final 的,定义的方法必须是public ab ...
- Java开发神器Lombok的使用与原理
在面向对象编程中必不可少需要在代码中定义对象模型,而在基于Java的业务平台开发实践中尤其如此.相信大家在平时开发中也深有感触,本来是没有多少代码开发量的,但是因为定义的业务模型对象比较多,而需要重复 ...
- 「SCOI2005」王室联邦
「SCOI2005」王室联邦 传送门 树分块. 考虑把树,按照节点个数每 \(B\) 个分块,把块顶作为省会. 这是具体证明 参考代码: #include <cstdio> #define ...