1.2 Name That Num
这道题属于稍微想一下就很容易实现的。
如果生成所有可能的name,再来比较,那么可能的数据 3^12(*5000),,不管能不能过。。总之很大。
//刚看了题解,因为dict是有序的,可以用二分搜索,显然我不会。。。
我感觉容易实现的就是用每个单词来比较。。5000*3*12 = =
/*
ID:y7276571
LANG: C
TASK: namenum
*/
#include<stdio.h>
#include<string.h>
#define MAXN 5000
#define MAXLEN 14
char name[MAXN][MAXLEN], p[10][3] = {"AAA","AAA","ABC", "DEF", "GHI", "JKL", "MNO", "PRS", "TUV", "WXY"}, ped[MAXLEN];
int len;
int isin(int pos)
{
int i;
for(i = 0; i < len; i++)
if(name[pos][i] != p[ped[i]-'0'][0] && name[pos][i] != p[ped[i]-'0'][1] &&name[pos][i] != p[ped[i]-'0'][2] )
return 0;
return 1;
}
int main(void)
{
int i, nlen = 0, ok = 0;
freopen("dict.txt", "r", stdin);
while(scanf("%s", name[nlen++]) != EOF) ;
freopen("namenum.in", "r", stdin);
freopen("namenum.out", "w", stdout);
scanf("%s", ped);
len = strlen(ped);
for(i = 0; i < nlen; i++)
if(isin(i) && strlen(name[i]) == len) { printf("%s\n", name[i]); ok = 1; }
if(!ok) printf("NONE\n");
return 0;
}