这道题只要开始时将字母转换为对应的数字存在数组num中,然后把输入的数字分位存储在数组name中,最后将字典中的数据现根据num转化为数字,然后与name比较就可以了。
/*
ID: acmerfi1
LANG: C
TASK: namenum
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 15
int name[MAX], flag = 0, i;
int num[26]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,0,7,7,8,8,8,9,9,9,0};
char str[MAX], les[MAX];
int main()
{
freopen("namenum.in", "r", stdin);
freopen("namenum.out", "w", stdout);
fgets(les, MAX, stdin);
memset(name, 0, sizeof(name));
for(i = 0; i < strlen(les) - 1; i++)
{
name[i] = les[i] - '0';
}
freopen("dict.txt", "r", stdin);
while(scanf("%s", str) != EOF)
{
for(i = 0; str[i] != 0; i++)
{
if(num[str[i]-'A'] != name[i]) break;
}
if(0 == str[i] && 0 == name[i])
{
printf("%s\n", str);
flag = 1;
}
}
if(!flag) printf("NONE\n");
return 0;
}
本文介绍了一种通过将字母转换为数字的方式实现电话号码与字典中单词匹配的算法。该算法首先将电话号码的每个数字对应到可能的字母上,再与预设的字典进行比对,找出所有可能的单词组合。
359

被折叠的 条评论
为什么被折叠?



