[usaco]Name That Number题解
2017-05-21 16:53
447 查看
题目:
每只奶牛有一个数字编号,现在给他们取名字,数字对应字母如下:2: A,B,C 5: J,K,L 8: T,U,V 3: D,E,F 6: M,N,O 9: W,X,Y 4: G,H,I 7: P,R,S (没有Q和Z)
那么比如说编号为4734的奶牛一共可以有81个名字,然而题目还给了一个dict.txt文件,里面有四千多名字供你选择,当然也只能在里面选择。最后输出可能的名字,没有则输出NONE
题解:
刚开始我想的是根据这个数字转换出可能的名字,然后逐个到文件里的名字里去找相同的。很显然超时了……大概就是3^12的可能性?然后想了一个其他方法,先把那四千多个名字翻译成数字,然后直接比对所给的数字。结果几乎不需要时间,不管你几位数都是一样的。而且要不是他的字母和数字转换缺三少四没有规律的话,这个代码真的只要几行……中间百度了文件读取的方法看了一下。代码:
/*ID: xcwhkh1
LANG: C
TASK: namenum
*/
#include <stdio.h>
#include<string.h>
char name[5000][13];
//1=49,A=65
int main () {
FILE *fin1 = fopen ("dict.txt", "r");
FILE *fin = fopen ("namenum.in", "r");
FILE *fout = fopen ("namenum.out", "w");
char a[13];
char temp[13];
memset(a,0,13);
fscanf(fin,"%s",a);
int i,flag=0;
for(i=0;i<4617;i++)
{
fscanf(fin1,"%s\n",name[i]);
strcpy(temp,name[i]);//先保存一个副本用于比较
for(int j=0;j<strlen(name[i]);j++)
{
if(name[i][j]=='A'||name[i][j]=='B'||name[i][j]=='C')
name[i][j]='2';
if(name[i][j]=='D'||name[i][j]=='E'||name[i][j]=='F')
name[i][j]='3';
if(name[i][j]=='G'||name[i][j]=='H'||name[i][j]=='I')
name[i][j]='4';
if(name[i][j]=='J'||name[i][j]=='K'||name[i][j]=='L')
name[i][j]='5';
if(name[i][j]=='M'||name[i][j]=='N'||name[i][j]=='O')
name[i][j]='6';
if(name[i][j]=='P'||name[i][j]=='R'||name[i][j]=='S')
name[i][j]='7';
if(name[i][j]=='T'||name[i][j]=='U'||name[i][j]=='V')
name[
8fa8
i][j]='8';
if(name[i][j]=='W'||name[i][j]=='X'||name[i][j]=='Y')
name[i][j]='9';
if(name[i][j]=='Q'||name[i][j]=='Z')
name[i][j]='1';
}
if(strcmp(a,name[i])==0)
{
flag=1;
fprintf(fout,"%s\n",temp);
}
}
if(flag==0)
fprintf(fout,"NONE\n");
return 0;
}
相关文章推荐
- USACO--1.2Name That Number
- USACO 1.2.3 Name That Number
- USACO / Name That Number(枚举,哈希)
- [USACO]Name That Number
- C++_USACO_Name That Number
- USACO Section 1.2 Name That Number 解题报告
- USACO-Section1.2 Name That Number【暴力枚举】【二分查找】
- USACO-Section1. 4000 3 Name That Number (遍历与字符串比较)
- USACO Name That Number 解题日志
- USACO习题:Name That Number
- usaco Name That Number
- USACO基础第六题Name That Number
- USACO 1.2.3 Name That Number 命名那个数字
- 【多文件操作】【检索】Name That Number (Usaco_Training 1.2)
- USACO 1.2 Problem 3 Name That Number
- USACO1.2.3 Name That Number (namenum)
- Usaco 1.2.3 命名那个数字(Name That Number)
- USACO-section1.2.3 Name that number
- [USACO 1.2.3] Name That Number
- usaco 1-2-3 Name That Number