视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
USACO1.2.3NameThatNumber
2020-11-09 08:31:53 责编:小采
文档


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; }

下载本文
显示全文
专题