HDU 1251

来源:互联网 发布:linux查看samba服务 编辑:程序博客网 时间:2024/06/06 00:25

统计难题

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)
Total Submission(s): 40024    Accepted Submission(s): 14498


Problem Description
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
 

Input
输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.

注意:本题只有一组测试数据,处理到文件结束.
 

Output
对于每个提问,给出以该字符串为前缀的单词的数量.
 

Sample Input
bananabandbeeabsoluteacmbabbandabc
 

Sample Output
2310
 

Author
Ignatius.L
 

Recommend
Ignatius.L
 

Statistic | Submit | Discuss | Note

思路:
方法一:Trie树,参考
方法二:用map<string,int>,map[string]表示string出现的次数
参考:http://www.cnblogs.com/xyoung/archive/2010/11/17/1879823.html

欢迎交流:
#include <iostream>#include <map>#include <cstring>#include <string>using namespace std;int main(){    int i, len;    char str[10];        map<string, int> m;    while( gets(str) )    {        len = strlen(str);        if ( !len )        {            break;        }        for(i = len; i > 0; i--)        {            str[i] = '\0';            m[str]++;   //cout<<str  <<m[str]<<endl;        }    }    while( gets(str) )    {        cout << m[str] << endl;    }        return 0;}





0 0