[HDOJ]problem_1251【统计难题】:
#include<iostream>
#include<cstdio>
#include<map>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
map<string,int> str;
map<string,int> ::iterator pos;
int i,j,n,t,r,k;
char s[15],s1[15];
while (gets(s),strlen(s))
{
r=0;
for (i=0;i<strlen(s);i++)
{
s1[r++]=s[i];
s1[r]='\0';
str[s1]++;
}
}
while (scanf("%s",s)!=EOF)
{
printf("%d\n",str[s]);
}
return 0;
}
这道题目之前用数组写好难,也好麻烦,WA了10多遍还过不了,前几天学了点map,就重新写了一遍,一下子就AC了。
我是这样想的:前面输入单词的时候,把每个单词的前缀放到map里面。(比如输入abcde,就把a,ab,abc,abcd,abcde分别放入map)
很简单哈哈,map真的挺有用的