题意:给出一些单词,问如果在手机的九宫格输入法中输入一串数字,可以对应多少个单词。
代码如下:
#include <cstring>
#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <map>
#include <string>
#include <queue>
#include <bitset>
#include<assert.h>
using namespace std;
int tonum[]={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};
map<int,int> mp;
int q[5005];
int main()
{
// freopen("data.txt","r",stdin);
int T;
scanf("%d",&T);
while(T--){
mp.clear();
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<n;++i){
scanf("%d",&q[i]);
}
char a[10];
for(int i=0;i<m;++i){
scanf("%s",a);
int tmp=0;
int len=strlen(a);
for(int i=0;i<len;++i){
tmp=tmp*10+tonum[a[i]-'a'];
}
if(mp.find(tmp)!=mp.end()){
mp[tmp]++;
} else {
mp[tmp]=1;
}
}
for(int i=0;i<n;++i){
if(mp.find(q[i])==mp.end())puts("0");
else printf("%d\n",mp[q[i]]);
}
}
return 0;
}