2017-5-25
题目大意:
给定4617个可被接受的牛的名字;给遗传数字,按照规则,如下:
2: A,B,C
4: G,H,I
5: J,K,L
7: P,R,S
8: T,U,V
9: W,X,Y
将数字翻译成一个可以被接受的名字并输出。
样例输入:
4734
样例输出:
GREG
题解:
将给定的可接受的牛的名字转换成唯一的数字,与给的数字做比较,配上一定的剪枝,可以减少一定的时间。
if(k1!=k2){
continue;
}
k1 代表数字长度 k2 代表字符串长度
(我将数字当成字符进行比较)
如:a[i]-‘A’==b[i]
代码:
C++
/*
ID:mujinui1
PROG:namenum
LANG:C++
*/
#include<fstream>
using namespace std;
const char code[26] = {'2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7','0','7','7','8','8','8','9','9','9'};
char a[13], b[13], c[13];
int main(){
ifstream fin1("dict.txt");
ifstream fin("namenum.in");
ofstream fout("namenum.out");
int flag1,flag2=1;
char a[100];
char num[15];
fin>>num;
int k1,k2;
for(k1=0;num[k1]!='\0';k1++);
while(fin1>>a){
flag1=1;
for(k2=0;a[k2]!='\0';k2++);
if(k1!=k2){
continue;
}
for(int i=0;i<k1;i++){
if(code[a[i]-'A']!=num[i]){
flag1=0;
}
}
if(flag1==1){
fout<<a<<endl;
flag2=0;
}
}
if(flag2==1){
fout<<"NONE"<<endl;
}
return 0;
}