问题描述
输入
输出
样例输入
1 3 5 46 64448 74 go in night might gn
样例输出
3 2 0
分析:手机键盘,给你一个数,然后给你很多字符串,问你用这个数敲打键盘,能打出多少给定的字符串?
思路:根据每个给出的字符串,写出相应的数字,然后和输入的比较是否相等。(哈希算法)
CODE:
#include <iostream>
#include <string.h>
using namespace std;
int ans[1000005];
int main()
{
int key[127];
key['a']=key['b']=key['c']=2;
key['d']=key['e']=key['f']=3;
key['g']=key['h']=key['i']=4;
key['j']=key['k']=key['l']=5;
key['m']=key['n']=key['o']=6;
key['p']=key['q']=key['r']=key['s']=7;
key['t']=key['u']=key['v']=8;
key['w']=key['x']=key['y']=key['z']=9;
int t;
cin>>t;
while(t--){
int n,m,a[5005];
memset(ans,0,sizeof(ans));
char b[5005][8];
cin>>n>>m;
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<m;i++){
cin>>b[i];
int sum=0;
for(int j=0;j<strlen(b[i]);j++)
sum=sum*10+key[(int)b[i][j]];
ans[sum]++;
}
for(int i=0;i<n;i++)
cout<<ans[a[i]]<<endl;
}
return 0;
}