您的位置:首页 > 其它

USACO 1.2.3 Name That Number

2012-02-21 21:52 411 查看
思路:先把dict.txt中的名字都转化成数字,存储在数组中,便于查找。需要注意的是数字与字母的对应表里没有字母Q和Z,还有就是如果有多组满足题意,则都需要输出。

代码如下:

/*
ID: michael139
LANG: C
PROG: namenum
*/
#include<stdio.h>
#include<string.h>
char table[8][4]={"ABC","DEF","GHI","JKL","MNO","PRS","TUV","WXY"};
char word[5050][15],word_num[5050][15];
int main () {
FILE *fin  = fopen("namenum.in", "r");
FILE *fout = fopen("namenum.out", "w");
FILE *fin2 = fopen("dict.txt","r");
char num[15],temp[15];
int len,i,j,m,k = 0,ok;
while (fscanf(fin2,"%s",temp) != EOF) {
len = strlen(temp);
for (i=0;i<len;i++) {
ok = 0;
for (j=0;j<8;j++) {
for (m=0;m<3;m++) {
if (temp[i]==table[j][m]) {
word_num[k][i] = j+2+'0';
ok = 1;
break;
}
}
if (ok) break;
}
if (!ok) word_num[k][i] = 'X';
}
strcpy(word[k],temp);
k ++;
}
while (fscanf(fin,"%s",num) != EOF) {
ok = 0;
for (i=0;i<k;i++) {
if (!strcmp(num,word_num[i])) {
fprintf(fout,"%s\n",word[i]);
ok = 1;
}
}
if (!ok) fprintf(fout,"NONE\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: