<pre name="code" class="cpp">根据题意,是从字母到数字的映射,由电话上的字母映射到对应的数字,这是最基本的哈希思想,可以用map来快速解决
</pre><pre name="code" class="cpp">
<pre name="code" class="cpp">#include<cstdio>
#include<map>
#include<string>
#include<cstring>
using namespace std;
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};
char b[30],c[30];
int main(void)
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m1;
scanf("%d%d",&n,&m1);
map<string,int> m;
map<string,int>::iterator it;
string s;
for(int i=0; i<n; i++)
{
scanf("%s",b);
s=b;
m[s]=0;
}
for(int i=0; i<m1; i++)
{
scanf("%s",b);
int cnt=strlen(b);
for(int i=0; i<cnt; i++)
{
c[i]=a[b[i]-'a'];
}
c[cnt]='\0';
s=c;
m[s]++;;
}
it=m.begin();
for(int i=0; i<n; i++)
{
printf("%d\n",it->second);
it++;
}
}
return 0;
}