hdu 4287 Intelligent IME

简介: 点击打开链接hdu 4287 解题思路: 1思路:暴力+map 2分析:建立一个char 数组用来存储每一个字母对应的数值。然后求出每一个单词的序列,然后利用map查找。

点击打开链接hdu 4287


解题思路

1思路:暴力+map

2分析:建立一个char 数组用来存储每一个字母对应的数值。然后求出每一个单词的序列,然后利用map查找。最后输出

3注意:如果是采取每一次都去搜索那么肯定TLE


代码

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <map>
using namespace std;
#define MAXN 5010

int t, n, m;
char ch[26] = {'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'};
string word[MAXN];
string str[MAXN];
map<string , int>mp;

void solve() {
    map<string , int>::iterator it;
    for (int i = 0; i < m; i++) {
        cin >> word[i];
        string s = "";
        for(int j = 0 ; j < word[i].size() ; j++)
            s += ch[word[i][j]-'a'];
        it = mp.find(s);/*查找*/
        if(it != mp.end())
            mp[s]++;
        else 
            mp[s] = 1;
    }
    for(int i = 0 ; i < n ; i++)
        printf("%d\n" , mp[str[i]]-1);/*这里要减1*/
}

int main() {
    //freopen("input.txt" , "r" , stdin);
    scanf("%d", &t);
    while (t--) {
        mp.clear();
        scanf("%d%d", &n, &m);
        for (int i = 0; i < n; i++){
            cin>>str[i];
            mp[str[i]] = 1;/*插入map容器*/
        }
        solve();
    }
}


目录
相关文章
UVa389 - Basically Speaking
UVa389 - Basically Speaking
36 0
|
机器学习/深度学习
AtCoder Beginner Contest 218 C - Shapes (模拟)
AtCoder Beginner Contest 218 C - Shapes (模拟)
146 0
快速使用上咱的ideal的快捷键小技巧
快速使用上咱的ideal的快捷键小技巧
193 0
快速使用上咱的ideal的快捷键小技巧
HDU-1017,A Mathematical Curiosity
HDU-1017,A Mathematical Curiosity
|
机器学习/深度学习 自然语言处理
|
人工智能 Java 安全
HDU 1039 Easier Done Than Said?
Easier Done Than Said? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12751    Accepted Subm...
804 0
【HDU 5572 An Easy Physics Problem】计算几何基础
2015上海区域赛现场赛第5题。 题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5572 题意:在平面上,已知圆(O, R),点B、A(均在圆外),向量V。
1039 0
uva live 3516 - Exploring Pyramids
点击打开链接 题意:给出一棵多叉树,每个结点的任意两个子节点都有左右之分。从根节点开始,每次尽量往左走,走不通就回溯,把遇到的字母顺序记录下来,可以得到一个序列。
769 0