统计难题---hdu1251字典树模板
2024-09-02 21:14:06
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1251
node *head=(node*)malloc(sizeof(node));
for(int i=0; i<26; i++)
{
head->next[i] = NULL;
head->sum = 0;
}
可以改成node *head=new node();
要用c++提交才对,不然G++就内存超限了-_-
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#include<stdlib.h>
using namespace std; struct node
{
int sum;
node *next[];
}; void BuildLibTree(node *head, char s[])
{
node *p = head,*q; for(int i=; s[i]; i++)
{
int k = s[i] - 'a';
if(p->next[k] == NULL)
{
q=(node*)malloc(sizeof(node));
for(int j=; j<; j++)
{
q->next[j] = NULL;
q->sum = ;
}
p->next[k] = q;
}
p = p->next[k];
p->sum++;
}
}
int Query(node *head, char s[])
{
node *p = head;
for(int i=; s[i]; i++)
{
int k = s[i]-'a';
if(p->next[k] == NULL)
return ;
p = p->next[k];
}
return p->sum;
}
int main()
{
char s[];
node *head=(node*)malloc(sizeof(node));
for(int i=; i<; i++)
{
head->next[i] = NULL;
head->sum = ;
}
while(gets(s),s[])
BuildLibTree(head, s); while(scanf("%s",s)!=EOF)
printf("%d\n", Query(head, s));
return ;
}
最新文章
- Python 基础之二用户交互input
- java基础之 序列化
- 转载:C#保存文件时重名自动生成新文件的方法
- 关于SVN代码提交粒度和频率的思考
- Hadoop.2.x_网站PV示例
- Codeforces 346C Number Transformation II 构造
- POJ 2299 Ultra-QuickSort 归并排序、二叉排序树,求逆序数
- compareTo()
- Silverlight下的Socket通讯
- R与数据分析旧笔记(十八完结) 因子分析
- JQuery - MD5加密
- 通过C++修改系统时间代码
- AOP 切面编程------JoinPoint ---- log日志
- python之路--day11---迭代器和生成器
- getnameinfo函数
- 用crash来分析一下proc的文件访问
- Wildcard Matching leetcode java
- suse zypper 添加源
- Process Class (System.Diagnostics)
- 查询相应id下的数据