当前位置:Gxlcms > mysql > USACO1.2.3NameThatNumber

USACO1.2.3NameThatNumber

时间:2021-07-01 10:21:17 帮助过:59人阅读

USACO 1.2.3 Name ThatNumber 题意:有好多头奶牛,它们每一头都有一个编号,每个数字分别对应三个字母,每个数字从它对应的字母中挑一个出来组成一个单词,给定一个词典,看如果这个单词在词典中是存在的,就输出,如果存在多个这样的单词,按照字母表的顺

USACO 1.2.3 Name ThatNumber

题意:有好多头奶牛,它们每一头都有一个编号,每个数字分别对应三个字母,每个数字从它对应的字母中挑一个出来组成一个单词,给定一个词典,看如果这个单词在词典中是存在的,就输出,如果存在多个这样的单词,按照字母表的顺序输出。

打印出所有可能的单词然后去比较,觉得效率有问题。出题者的用意明显是让我们反过来做,将词典里的单词转换成数字然后和给定的数字比较,因为给的词典里的单词都是按照字母表顺序排列的,而且数字和字母之间存在明显关系。

细节+代码:

/*  
ID: 15257142  
LANG: C  
TASK: namenum 
*/  
#include
#include
int main(){
	freopen("namenum.in", "r", stdin); //在我看来输入
输出是这道题目全部价值所在。 char num[20],a[30],b[20]; int m,ma,i,f,k; scanf("%s",num); m = strlen(num)-1; freopen("dict.txt", "r", stdin); //! freopen("namenum.out", "w", stdout); //! f = 0; while(scanf("%s",a)!=EOF){ ma = strlen(a)-1; if(m!=ma) continue; for(i = 0;i<=ma;i++){ if(a[i]>'Q') //是没有'Q'的,那么…… k = (a[i]-'B')/3; else k = (a[i]-'A')/3; b[i] = k+'2'; } b[ma+1] = '\0'; if(strcmp(b,num)==0){ printf("%s\n",a); f = 1; } } if(f==0) printf("NONE\n"); fclose(stdin); fclose(stdout); return 0; }

人气教程排行