hdu 4287 Intelligent IME

题目:
问给出的数字在字符串中出现的次数(有映射关系的)

分析:
直接map<int,int> 记录给出的数,然后对于每个字符串,可以先转换成一个整数(长度小于7),然后若该数在map中,
这更新相应的计数器即可

若代码有错,请指出^^

6726825 2012-09-09 17:10:30 Accepted 4287 93MS 688K 839 B G++
View Code
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <map>
 5 
 6 using namespace std;
 7 
 8 const int X = 5005;
 9 
10 int n,m;
11 int use[X];
12 
13 int a[] = {2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9};
14 
15 map<int,int> ma;
16 char s[10];
17 
18 int main(){
19     freopen("sum.in","r",stdin);
20     int ncase;
21     scanf("%d",&ncase);
22     while(ncase--){
23         int x;
24         scanf("%d%d",&n,&m);
25         ma.clear();
26         memset(use,0,sizeof(use));
27         for(int i=1;i<=n;i++){
28             scanf("%d",&x);
29             ma[x] = i;
30         }
31         int temp;
32         for(int i=0;i<m;i++){
33             scanf("%s",s);
34             temp = 0;
35             for(int j=0;s[j];j++)
36                 temp = temp*10+a[s[j]-'a'];
37             use[ma[temp]]++;
38         }
39         for(int i=1;i<=n;i++)
40             printf("%d\n",use[i]);
41     }
42     return 0;
43 }
posted @ 2012-09-09 17:24  yejinru  阅读(856)  评论(1编辑  收藏  举报