hdu 4287 Intelligent IME

来源:互联网 发布:sql 逐行累加 编辑:程序博客网 时间:2024/05/15 06:08

题意:告诉你手机键盘上数字对应的字母,然后给你一些数字串和一些字母串,问你有几个字母串对应相应的数字串。

解法:map,先手机键盘建立一个map,然后数字串和对应的编号建立一个map;

#include<bits/stdc++.h>using namespace std;int main(){    map<char,char>pq;    map<string,int>qp;    pq['a']='2';    pq['b']='2';    pq['c']='2';    pq['d']='3';    pq['e']='3';    pq['f']='3';    pq['g']='4';    pq['h']='4';    pq['i']='4';    pq['j']='5';    pq['k']='5';    pq['l']='5';    pq['m']='6';    pq['n']='6';    pq['o']='6';    pq['p']='7';    pq['q']='7';    pq['r']='7';    pq['s']='7';    pq['t']='8';    pq['u']='8';    pq['v']='8';    pq['w']='9';    pq['x']='9';    pq['y']='9';    pq['z']='9';    int T;    cin>>T;    while(T--)    {        int n,m,c[5010]={0};        string a[5010],b[5010],str;        cin>>n>>m;        for(int i=0;i<n;i++)        {            cin>>a[i];            qp[a[i]]=i;        }        for(int i=0;i<m;i++)        {            cin>>b[i];            int len=b[i].size();            str="";            for(int j=0;j<len;j++)                str+=pq[b[i][j]];            if(qp.count(str)!=0)                c[qp[str]]++;        }        for(int i=0;i<n;i++)            printf("%d\n",c[i]);    }    return 0;}


 

0 0
原创粉丝点击