http://acm.hdu.edu.cn/showproblem.php?pid=4287
直接把字符串换成数字标记就可以了,只有6位数,果断暴力
#include <stdio.h>
#include <string.h>
int shu[26]={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};
int s[1000000];
int n,m;
int num[5005];
int main()
{
int cas,i,j,tt,sum;
char tmp[10];
scanf("%d",&cas);
while(cas--)
{
memset(s,0,sizeof(s));
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
scanf("%d",&num[i]);
for(i=0;i<m;i++)
{
scanf("%s",tmp);
int l=strlen(tmp);
sum=0;tt=1;
for(j=l-1;j>=0;j--)
{
sum=sum + shu[ tmp[j]-'a' ] * tt;
tt*=10;
}
s[sum]++;
}
for(i=0;i<n;i++)
{
printf("%d\n",s[ num[i] ]);
}
}
return 0;
}