这又是两道一样的题,都是建立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树的建立的更多相关文章

  1. POJ3630(Trie树)

    Phone List Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 26385   Accepted: 7957 Descr ...

  2. trie树的建立方法汇总

    方法一:孩子兄弟表示法 即对于某一个点,记录他的第一个孩子以及他的同父亲的下一个儿子. 具体代码如下: #include <cstdio> #include <cstring> ...

  3. hiho一下 第二周 trie树

    Trie树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路 ...

  4. hihoCoder #1014 : Trie树 [ Trie ]

    传送门 #1014 : Trie树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互 ...

  5. 1014 : Trie树 hihocoder

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进. ...

  6. #1014 : Trie树 HihoCoder(字典树)

    描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进. 这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题: ...

  7. hihoCoder 1014 Trie树 (Trie)

    #1014 : Trie树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 小Hi和小Ho是一对好朋友.出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮 ...

  8. Hihocoder #1014 : Trie树 (字典数树统计前缀的出现次数 *【模板】 基于指针结构体实现 )

    #1014 : Trie树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助, ...

  9. hihoCoder 1014 : Trie树(字典树)

    传送门 Description 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进. 这一天,他们遇到了一本词典,于是小Hi就向小 ...

随机推荐

  1. SpringBoot启动使用elasticsearch启动异常:Received message from unsupported version:[2.0.0] minimal compatible

    SpringBoot启动使用elasticsearch启动异常:Received message from unsupported version:[2.0.0] minimal compatible ...

  2. Linux Mysql基础操作

    1). 打开MySQL 使用如下两条命令,打开MySQL服务并使用root用户登录: # 启动 MySQL 服务 sudo service mysql start # 使用 root 用户登录,实验楼 ...

  3. spring aop @after和@before之类的注解,怎么指定多个切点

    有如下两个切点: @Pointcut("execution(public * com.wyh.data.controller.DepartmentController.*(..))" ...

  4. js加入收藏

    <script> function AddFavorite(sURL, sTitle) { try { window.external.addFavorite(sURL, sTitle); ...

  5. Python 爬取 热词并进行分类数据分析-[数据修复]

    日期:2020.02.01 博客期:140 星期六 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

  6. 4 JavaScript异常&debugger&保留关键字

    try:语句测试代码块错误 catch:语句处理错误,一般提供一个对象如catch(err)用来存储错误信息 throw: 语句创建自定义错误,抛出的信息可以被catch捕获 JavaScript错误 ...

  7. 汇编语言从入门到精通-2CPU资源和存储器

    CPU资源和存储器 在汇编语言中,需要访问的硬件资源主要有:CPU内部资源.存储器和I/O端口.本章将着重讲解CPU内部寄存器的命名.功能及其常见的用途,还要介绍存储器的分段管理模式.存储单元地址的表 ...

  8. springboot 模板

    参考:https://blog.csdn.net/wangb_java/article/details/71775637

  9. 学习笔记(15)- 保险行业的问答语料 insuranceqa_data

    数据概览 ''' pool data are translated Chinese data with Google API from original English data ''' POOL_T ...

  10. 快速幂 & 矩阵快速幂

    目录 快速幂 实数快速幂 矩阵快速幂 快速幂 实数快速幂 普通求幂的方法为 O(n) .在一些要求比较严格的题目上很有可能会超时.所以下面来介绍一下快速幂. 快速幂的思想其实是将数分解,即a^b可以分 ...