HDU 1251(简单MAP字符串)

野性酷女 2022-06-17 03:14 232阅读 0赞

统计难题

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

Problem Description

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

Input

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

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

Output

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

Sample Input

  1. banana
  2. band
  3. bee
  4. absolute
  5. acm
  6. ba
  7. b
  8. band
  9. abc

Sample Output

  1. 2
  2. 3
  3. 1
  4. 0

Author

Ignatius.L

Recommend

Ignatius.L

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. char a[25];
  6. map<string,int>m; //string ,map 类型的存储器
  7. int i,n;
  8. while(gets(a))
  9. {
  10. n=strlen(a);
  11. if(n==0)
  12. break;
  13. for(i=n;i>=1;i--)
  14. {
  15. a[i]='\0'; //‘字符串结束符’
  16. m[a]++;
  17. }
  18. }
  19. char b[15];
  20. while(gets(b))
  21. {
  22. cout<<m[b]<<endl;
  23. }
  24. return 0;
  25. }
  26. '\0'的意思是 ASCII 0 的字符。
  27. 它所的意义是“字符串结束符”。
  28. 比如,一个字符串 "Hello" ,它是由字符 'H''e''l''l''o''\0' 6 个字符在内存中连续存放的。程序在见到第一个 '\0' 时就会认为该字符串结束了。

发表评论

表情:
评论列表 (有 0 条评论,232人围观)

还没有评论,来说两句吧...

相关阅读