一、题意
给出一组单词,另给出一组单词用作查询,求解对于每个用于查询的单词,前一组中有多少个单词以其为前缀。
二、分析
根据题目很容易想到hash的方法,首先可以朴素的考虑将第一组中的所有单词的前缀利用map进行统计,查询时直接得到结果
所以很容易可以得到以下代码。
注意:输入时的空行代表第一行的结束,利用gets读入并根据字符串的长度是否为0来判断;
1 # include <iostream> 2 # include <cstdio> 3 # include <cstring> 4 # include <map> 5 using namespace std; 6 const int maxn = 15; 7 char word[maxn]; 8 map<string,int> M; 9 int main() 10 { 11 while(gets(word)) 12 { 13 if(strlen(word) == 0) 14 break; 15 int L = strlen(word); 16 for(int i=L;i>0;i--) 17 { 18 word[i] = '