HDU 4287 (13.08.17)
2 : a, b, c 3 : d, e, f 4 : g, h, i 5 : j, k, l 6 : m, n, o
7 : p, q, r, s 8 : t, u, v 9 : w, x, y, z
When we want to input the word “wing”, we press the button 9, 4, 6, 4, then the input method will choose from an embedded dictionary, all words matching the input number sequence, such as “wing”, “whoi”, “zhog”. Here comes our question, given a dictionary, how many words in it match some input number sequences?
Two integer N (1 <= N <= 5000), M (1 <= M <= 5000), indicating the number of input number sequences and the number of words in the dictionary, respectively. Then comes N lines, each line contains a number sequence, consisting of no more than 6 digits. Then comes M lines, each line contains a letter string, consisting of no more than 6 lower letters. It is guaranteed that there are neither duplicated number sequences nor duplicated words.
3 5
46
64448
74
go
in
night
might
gn
2
0
题意与思路:
输入N个按键序列, 再输入M个单词, 要求我们对M个单词进行检索, 求出其按键序列
然后统计, N个按键序列每个分别出现了几次
错误点: 由于不注意严谨, 以为少写一个break没事, 导致超时~
我有两份代码, 一份是错误的, 还没找出错误来, 一份已AC;
AC代码:
#include<stdio.h>
#include<string.h> int t[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}; int T, N, M; int ans[5555];
char num[5555][10];
char word[5555][10]; void getans(char *p) {
int i, len;
int pos = 0;
char t_num[10];
len = strlen(p);
for(i = 0; i < len; i++)
t_num[pos++] = t[p[i]-'a'] + '0';
t_num[pos] = '\0';
for(i = 0; i < N; i++)
if(strcmp(t_num, num[i]) == 0) {
ans[i]++;
break;
}
} int main() {
scanf("%d", &T);
while(T--) {
int i;
scanf("%d %d", &N, &M); getchar(); memset(ans, 0, sizeof(ans));
for(i = 0; i < N; i++)
gets(num[i]);
for(i = 0; i < M; i++)
gets(word[i]); for(i = 0; i < M; i++)
getans(word[i]); for(i = 0; i < N; i++)
printf("%d\n", ans[i]);
}
return 0;
}
wrong代码:
#include<stdio.h>
#include<string.h> int T, N, M; char num[5555][10];
char word[5555][10];
int ans[5555]; char t[10][10]; void getans(char *p) {
int i, j, k, pos = 0;
char t_num[10];
int len1, len2;
len1 = strlen(p);
for(i = 0; i < len1; i++) {
for(j = 2; j < 10; j++) {
len2 = strlen(t[j]);
for(k = 0; k < len2; k++) {
if(t[j][k] == p[i])
t_num[pos++] = j;
}
}
} t_num[pos] = '\0';
for(i = 0; i < N; i++) {
if(strcmp(t_num, num[i]) == 0)
ans[i]++;
}
} int main() {
scanf("%d", &T); while(T--) {
int i;
scanf("%d%d", &N, &M); memset(ans, 0, sizeof(ans));
strcpy(t[2], "abc");
strcpy(t[3], "def");
strcpy(t[4], "ghi");
strcpy(t[5], "jkl");
strcpy(t[6], "mno");
strcpy(t[7], "pqrs");
strcpy(t[8], "tuv");
strcpy(t[9], "wxyz"); for(i = 0; i < N; i++)
gets(num[i]);
for(i = 0; i < M; i++)
gets(word[i]); for(i = 0; i < M; i++)
getans(word[i]); for(i = 0; i < N; i++)
printf("%d\n", ans[i]);
}
return 0;
}
HDU 4287 (13.08.17)的更多相关文章
- UVA 536 (13.08.17)
Tree Recovery Little Valentine liked playing with binary trees very much. Her favoritegame was con ...
- UVA 673 (13.08.17)
Parentheses Balance You are given a string consisting of parentheses () and []. Astring of this ty ...
- HDU 4642 (13.08.25)
Fliping game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- HDU 4287 Intelligent IME(字典树数组版)
Intelligent IME Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 13.1.17 CREATE TABLE Syntax
13.1.17 CREATE TABLE Syntax 13.1.17.1 CREATE TABLE ... LIKE Syntax 13.1.17.2 CREATE TABLE ... SELECT ...
- Intel Digital Innovation Industry Summit(2018.08.17)
时间:2018.08.17地点:北京金隅喜来登大酒店
- HDU 4287 Intelligent IME hash
Intelligent IME Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...
- hdu 4287
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4287 #include<cstdio> #include<cstring> # ...
- UVA 10194 (13.08.05)
:W Problem A: Football (aka Soccer) The Problem Football the most popular sport in the world (ameri ...
随机推荐
- oracle监听服务开启
输入命令netca即可开启oracle的监听服务 弹出对话框 选择监听服务配置,单击下一步 选择增加监听,单击下一步 监听的名字,默认即可,下一步 监听链接的协议,默认TCP协议即可,下一步 监听默认 ...
- 黑马程序员——String类
------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...
- 返回ipv 地址
//返回ipv 地址 public static string GetIP4Address() { string IP4Address = String.Empty; foreach (IPAddre ...
- WCF入门教程系列五
一.概述 WCF在通信过程中有三种模式:请求与答复.单向.双工通信.以下我们一一介绍. 二.请求与答复模式 描述: 客户端发送请求,然后一直等待服务端的响应(异步调用除外),期间处于假死状态,直到服务 ...
- Hadoop高可用平台搭建
文章概览: 1.机器规划和预配置 2.软件安装 3.集群文件配置 4.启动集群 5.HA验证 6.注意事项 7.小结 机器规划和预配置 主机/进程 NN DN RM NM ZK(QP) ZKFC ...
- BZOJ 2243 SDOI 2011染色
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2243 算法讨论: 树链剖分把树放到线段树上.然后线段树的每个节点要维护的东西有左端点的颜色 ...
- libcurl下载文件简易demo
size_t test_save(void *ptr, size_t size, size_t nmemb, void *stream) { size_t sizes = size * nmemb; ...
- POJ2239 二分图最大匹配
问题:POJ2239 分析: 本题给出每门课程的上课时间,求最大选课数,可以转化为二分图最大匹配问题求解. 设集合A为课程集,集合B为上课时间集,根据输入建立二分图.最大选课书就是该二分图的最大匹配数 ...
- 有关service
在symfony2 服务注入容器的时候参数语法可以是这样: cellcom.twig.menu_extension: class: Cellcom\WebBundle\Twig\Extension\M ...
- 用python随机生成数据,再插入到postgresql中
用python随机生成学生姓名,三科成绩和班级数据,再插入到postgresql中. 模块用psycopg2 random import random import psycopg2 fname=[' ...