这又是两道一样的题,都是建立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. Priority Queue(优先队列)

    今天早上起来完成了一个完整的基于二叉堆实现的优先队列,其中包含最小优先和最大优先队列. 上篇说了优先队列的特性,通过建堆和堆排序操作,我们就已经看到了这种数据结构中的数据具有某种优先级别,要么非根节点 ...

  2. Mysql基本用法-存储引擎-04

    MYSQL中只有 INNODB和BDB 类型的数据表才能支持事务处理!其他的类型是不支持的!(切记!) Mysql基本用法-存储引擎-02中的test_user表 和 phpcvs表 <?php ...

  3. C++常量表达式、const、constexpr(C++11新增)的区别

    常量表达式是指值不会改变且在编译过程中就能够得到计算结果的表达式,能在编译时求值的表达式. 程序先编译再运行:  在编译阶段, 编译器将在编译过程中把用到该常量的地方都全都替换为 常量的值. 但是常量 ...

  4. 【剑指Offer面试编程题】题目1361:翻转单词顺序--九度OJ

    题目描述: JOBDU最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,&quo ...

  5. python字符记录

    所有的字符方法论 # -*- coding: utf-8 -*- 2 #__author__ = 'Administrator' 3 4 name = "my name is {name} ...

  6. Windows 10 20H1版名称被定为Windows 10 Version 2004版以示区分

    导读 我们知道Windows 10 20H1 版目前的开发工作已经接近完成,当前微软主要通过新版本来修复部分已知的问题. 而名称上面按照以往规律推算应该是 Windows 10 Version 200 ...

  7. Python学习 —— 实现简单的爬虫

    为了加快学习python3.x,查了许多资料后写了这个脚本,这个脚本主要是爬取百度图片'东方幻想乡'的图片,但还是有很多问题存在. 下面给出代码: # 更新了一下代码 from urllib impo ...

  8. Android Studio的HAXM不支持虚拟机

    因为我的计算机是服务器,不支持虚拟机,所以报这个错了. 解决方式是直接连接物理手机,打开USB调试,安装驱动,运行项目即可.

  9. html常用整理

    视频链接:https://www.bilibili.com/video/av5862916?from=search&seid=12139895566389560177 我的第一个html &l ...

  10. C语言for循环嵌套示例

    打印九九乘法表 #include <stdio.h> int main() {   int n,i,j; for (i=1;i<=9;i++) printf("%-4d&q ...