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就向小 ...
随机推荐
- python浅析格式化输出和深浅copy
一,格式化输出 今天主要想记录一下关于格式化输出的例子,然后结合了自己的理解,分析如下: 格式是 :百分号+占位符 主要有三种使用形式:%s (其中s表示string)表示字符串 %d (其中d表 ...
- python pandas模块简单使用(读取excel为例)
第一步:模块安装 pip install pandas 第二步:使用(单个工作表为例) 说明:如果有多个工作表,那么只要指定sheetname=索引,(第一个工作表为0,第二个工作表为1,以此类推) ...
- 了解js闭包
定义:闭包是由函数以及创建该函数的环境组合而成.这个环境包含了这个闭包创建时所能访问的所有局部变量 理解:能够读取其他函数的内部变量的函数,并开辟新的作用域(环境) 例子1 function pare ...
- 服务器settings
1,如果增加了一个新的APP, 那么需要在服务器上 vim settings文件进行修改, 修改方法 i, :wq 2,正式服务器需要一样的操作
- Codeforces 601A:The Two Routes 宽搜最短路径
A. The Two Routes time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- STM32 RTC上的唤醒和闹钟
RTC很简单只要给备用电,RTC就会不停,可以进行设置和读时间.同时在RTC上也涉及了闹钟(EXTI_17:RTC_FLAG_ALRAF,相当于RTC的定时器,闹钟到了之后进行异步操作)和唤醒中断(低 ...
- Linux centosVMware shell中的函数、shell中的数组、
一.shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可. 格式: function _name() { command ...
- 1016 部分A+B (15 分)
正整数 A 的“DA(为 1 位整数)部分”定义为由 A 中所有 DA 组成的新整数 PA.例如:给定 8,DA=6,则 A 的“6 部分”PA 是 66,因为 A 中有 ...
- Django 学习 之ORM简介与单表操作
一.ORM简介 1.ORM概念 对象关系映射(Object Relational Mapping,简称ORM). 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到 ...
- 键盘类型UIKeyboardType
UITextField.UITextView等能够调出系统键盘的控件,通过下面这个属性可以控制弹出键盘的样式: self.priceTextField.keyboardType = UIKeyboar ...