Home >Database >Mysql Tutorial >USACO 1.2.3 Name That Number

USACO 1.2.3 Name That Number

WBOY
WBOYOriginal
2016-06-07 15:01:01958browse

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

USACO  1.2.3 Name ThatNumber

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

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

     细节+代码:

 

    

/*  
ID: 15257142  
LANG: C  
TASK: namenum 
*/  
#include<stdio.h>
#include<string.h>
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'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;
}</string.h></stdio.h>


 

 


 

 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn