hdu 4287 水题

来源:互联网 发布:数据库insert语句 编辑:程序博客网 时间:2024/06/15 14:00
题意:求所给数在输入字符串的时候出现的次数,用hash映射,轻松。。
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int hash[1000005];int a[50005];char str[10];int judge(char c){    if('a'<=c&&c<='c')          return 2;      if('d'<=c&&c<='f')          return 3;      if('g'<=c&&c<='i')          return 4;      if('j'<=c&&c<='l')          return 5;      if('m'<=c&&c<='o')          return 6;      if('p'<=c&&c<='s')          return 7;      if('t'<=c&&c<='v')          return 8;      if('w'<=c&&c<='z')          return 9;  }int main(){    int t,n,m;    scanf("%d",&t);    while (t--)    {        scanf("%d%d",&n,&m);        for (int i = 0; i < n; i++)            scanf("%d",&a[i]);        memset(hash,0,sizeof(hash));        for (int i = 1; i <= m; i++)        {            scanf("%s",str);            int len = strlen(str);            int sum = 0;            for (int i = 0; i < len; i++)                sum = sum * 10 + judge(str[i]);            hash[sum]++;        }        for (int i = 0; i < n; i++)            printf("%d\n",hash[a[i]]);    }    return 0;}