USACO Section 1.2 Name That Number

题目描述

在威斯康星州的大型牧场主中,习惯上要以会员部号序列出奶牛。 牛手不喜欢这个档案系统的优点,而且希望以一个愉快的名字叫他们的牧群,而不是说:“#4734,相处”。
通过编写一个将牛的品牌序列号转换成与该序列号唯一相关的可能名称的程序来帮助可怜的牛仔。 由于现在这些牛手都有蜂窝式马鞍手机,所以使用标准的Touch-Tone(R)电话键盘映射可以从数字到字母(“Q”和“Z”除外):

          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

在一个名为“dict.txt”的文件中提供了牛的可接受的名称,其中包含少于5,000个可接受的牛名称(所有字母大写)的列表。 拿一个牛的品牌号码,并报告该数字地图在给定字典中的所有可能字词,该字典在分级环境中以dict.txt提供(并按升序排序)。
例如,品牌号4734产生以下所有名称:

GPDG GPDH GPDI GPEG GPEH GPEI GPFG GPFH GPFI GRDG GRDH GRDI
GREG GREH GREI GRFG GRFH GRFI GSDG GSDH GSDI GSEG GSEH GSEI
GSFG GSFH GSFI HPDG HPDH HPDI HPEG HPEH HPEI HPFG HPFH HPFI
HRDG HRDH HRDI HREG HREH HREI HRFG HRFH HRFI HSDG HSDH HSDI
HSEG HSEH HSEI HSFG HSFH HSFI IPDG IPDH IPDI IPEG IPEH IPEI
IPFG IPFH IPFI IRDG IRDH IRDI IREG IREH IREI IRFG IRFH IRFI
ISDG ISDH ISDI ISEG ISEH ISEI ISFG ISFH ISFI

一旦发生,有效名称列表中的这81个名称中只有一个是“GREG”。
编写一个给定牛的品牌编号的程序,并打印可以从该品牌编号生成的所有有效名称,如果没有有效名称,则打印“NONE”。 序列号可以多达十几位数字。

程序名称:namenum

输入格式

长度为1至12位数字的单行。

输入(file namenum.in)

4734

输出格式
可以从输入生成的有效名称列表,每行一个,按字母顺序排列。

输出(file namenum.out)

GREG

解题思路

本题主要思路是,将文件中的每个字符串名字翻译成数字看是否与输入相等,相等把字符串打印;如果没有一个相等的,则输出“NONE”。

解题代码

/* 
ID:15189822
PROG:namenum
LANG:C++ 
*/ 
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
ofstream fout("namenum.out");
ifstream fin("namenum.in");
ifstream file("dict.txt");
bool none;
string s,name;
char m[256];
int i,sl,nl;
int main(){
    none=false;
    m['A']=m['B']=m['C']='2';
    m['D']=m['E']=m['F']='3';
    m['G']=m['H']=m['I']='4';
    m['J']=m['K']=m['L']='5';
    m['M']=m['N']=m['O']='6';
    m['P']=m['R']=m['S']='7';
    m['T']=m['U']=m['V']='8';
    m['W']=m['X']=m['Y']='9'; 
    fin>>s;sl=s.length();
    while(file>>name){
        nl=name.length();
        if(sl!=nl) continue;
        for(i=0;i<sl;i++){
		    if(s[i]!=m[name[i]]) break;
		} 
        if(i==sl){
            fout<<name<<endl;
            none=true;
        }
    }
    if(!none) fout<<"NONE"<<endl;
    return 0;
}


猜你喜欢

转载自blog.csdn.net/YanLucyqi/article/details/72793687