这又是两道一样的题,都是建立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. 8.1.1默认的map函数、reduce函数、分区函数

    1.1.1         默认的map函数和reduce函数 (1)Maper和Reuducer默认类 如果没有指定maper类和reduce类,则会用默认的Maper和Reuducer类去处理数据 ...

  2. 2019年 我的phper之路,时光没了,头发还在

    前言 曾经我认为最快的是麦迪的第一步,后来我觉得 7 酱逃跑速度更快,现在我懂了,原来我们都在跟时间赛跑. 年底了,给自己一个 "交代" 吧 2019 的我 2019 年写了 很多 ...

  3. 工具 - VS Code

    杂项 1. 主题 brackets light pro, One Monokai theme 2. directory tree indent guidelines, directory vertic ...

  4. idea激活,使用破解补丁无需注册码

    idea激活,使用破解补丁无需注册码 2017年08月19日 10:57:54 标签: idea / 破解 / 补丁 / 软件 / 13891 编辑 删除 idea激活,JetBrain旗下软件激活 ...

  5. ubuntu-18.04 修改用户名密码

    1. 开放root登录 设置root密码 $ sudo passwd root 切换到root 用户 $ sudo -i 修改/etc/pam.d/gdm-autologin $ vim /etc/p ...

  6. laravel 左联报错问题

  7. PTA的Python练习题(八)

    从 第3章-15 统计一行文本的单词个数 继续 1. s = input() count=0 for c in s: if c==' ': count=count+1 if c=='.': break ...

  8. 使用IDEA查看数据库

    emm...今天捣鼓了一下IDEA意外发现(原谅我后知后觉)不用Navicat也能查看数据库中的表,虽然可视化不如Navicat,但毕竟Navicat要钱,一些朋友也没有资源 = =,所以就记录并分享 ...

  9. js实现超范围的数相加

    在js中能表示的最大安全整数是 9007199254740991,可以用API Number.MAX_SAFE_INTEGER 看一下  超出范围就会发生精度丢失,像这样 解决方法: 相当于一个字符串 ...

  10. 利用django打造自己的工作流平台(一):从EXCEL到流程化运作

    因工作所需以及管理个人一些日常事项,自己基于django(一个基于python的web框架,详细介绍可查阅相关资料)开发了一个简易的工作流平台[平台地址].本文首先简要介绍工作流平台的设计思想及其在项 ...