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 }

你可能感兴趣的:(int)