hdu1251
来源:互联网 发布:加入放心淘宝贝没打标 编辑:程序博客网 时间:2024/05/29 13:17
统计难题
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submission(s): 43822 Accepted Submission(s): 15705
Problem Description
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
Input
输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.
注意:本题只有一组测试数据,处理到文件结束.
注意:本题只有一组测试数据,处理到文件结束.
Output
对于每个提问,给出以该字符串为前缀的单词的数量.
Sample Input
bananabandbeeabsoluteacmbabbandabc
Sample Output
2310
思路:找出前缀出现的次数就可以了。
代码:
#include <iostream>#include <algorithm>#include <stdio.h>#include <string.h>#include <stdlib.h>using namespace std;typedef struct node{ int num; struct node*child[26];}node,*Node;Node root;void insert(char *s){ int i,j; int len=strlen(s); Node next=NULL,temp=NULL; if(len==0)return ; next=root; for(i=0;i<len;i++) { if(next->child[s[i]-'a']!=NULL) { next=next->child[s[i]-'a']; (next->num)++; } else { temp=(Node)calloc(1,sizeof(node)); for(j=0;j<26;j++) temp->child[j]=0; next->child[s[i]-'a']=temp; next=temp; next->num=1; } }}int search(char *s){ int i; int len=strlen(s); Node next=NULL; if(len==0)return 0; next=root; for(i=0;i<len;i++) { if(next->child[s[i]-'a']!='\0') { next=next->child[s[i]-'a']; } else return 0; } return next->num;}void release(Node root){ int i; if(NULL==root) return; for(i=0;i<26;i++) { if(root->child[i]!=NULL) { release(root->child[i]); } } free(root); root=NULL;}int main(){ char s[25]; int i; root=(Node)calloc(1,sizeof(node)); for(i=0;i<26;i++) root->child[i]=0; root->num=0; while(gets(s),strcmp(s,"")!=0) insert(s); while(gets(s)!=0) cout<<search(s)<<endl; release(root); return 0;}
阅读全文
1 0
- hdu1251
- HDU1251
- hdu1251
- hdu1251
- hdu1251
- hdu1251
- hdu1251
- hdu1251
- hdu1251
- HDU1251
- hdu1251
- hdu1251
- HDU1251.cpp
- hdu1251 字符统计
- 统计难题 hdu1251
- HDU1251字典树
- hdu1251 字典树
- HDU1251统计难题
- 数据库中批量插入数据的方法
- Eclipse Juno + Tomcat 9.0 部署web应用
- 237. Delete Node in a Linked List
- 字符串问题---判断字符数组中是否所有的字符只出现了一次
- netfilter----filter机制
- hdu1251
- Yii2如何使用存取控制过滤器(ACF)
- [cocos2d-x]用getContentSize()返回的值用CCLOG打印必须用%f
- LeetCode 541. Reverse String II(C++版)
- 2017.8.18-------离散+逆序
- 入住CSDN
- Web中线程的理解
- zzuli2181-GJJ的日常之暴富梦-多校联萌(四)
- 关于javase中 instanceof的用法 为什么判读之后 还要进行强制类型转换