USACO 1.2.3 Name That Numberその数字の名前(ファイルを開く)

6948 ワード

Description
ウィスコンシン州牛大農場の経営者の中では、会計部門に連続数字で雌牛に烙印を押すことに慣れている.しかし、雌牛は携帯電話を使うとき、このシステムの便利さを感じず、「C'mon,#4734,get along.」という言葉ではなく、好きな名前で仲間を呼ぶのが好きだ.
かわいそうな牧牛工が雌牛の烙印番号を可能な名前に翻訳するのを助けるプログラムを書いてください.母牛たちは今、携帯電話を持っているので、その標準的なボタンの配列を使って、数を文字に訳します:(「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
許容可能な名前は、5000個未満の許容可能な牛の名前を含む「dict.dic」というファイルに置かれています.(すべての名前が大文字で辞書順に並んでいます)雌牛の番号を読み込んで、番号から翻訳され、辞書に載っている名前を返してください.
例えば、番号4734で生成できる以下の各名前:GPDG GPDH GPDI GPEG GPEH GPEEEEEEGPFG GPFFG GPFFFFFFFFFFFFFFFFFFFFFFFFFFG GRDHGREEEG GRFFG GRFFFFFFFFFGSEG GSFFFFGSFI HPDG HPDHHPDI HPEEEH HPFFFFFG HPFFFFG HPFFFFFFFFFFFFFFFFFFFFFFFHREG HREEEEEH HREEEH HRFFFFFFFFFFFFFFFFFHRFIHSDG HSDG HSDHHSHSHSHSDDHSHSHSHSHSHSHSEH HSEI HSFG HSFH HSFI IPDG IPDH IPDI IPEG IPEH IPEI IPFGIPFH IPFI IRDG IRDH IRDI IREG IREEH IREI IRFG IRFH IRFI ISDG ISDH ISDI ISEG ISEH ISEI ISFG ISFH ISFIはたまたま、81のうち1つの「GREG」だけが有効であった(辞書中).
与えられた番号に有効な名前をすべて印刷するプログラムを作成し、なければNONEを出力します.番号は12桁の数字があるかもしれません.
 
Input
個々の行には、1~12の番号が含まれます.
Output
有効な名前の重複しないリスト、行、名前を辞書順に出力します.有効な名前がない場合は「NONE」を出力します.
Sample Input
4734

Sample Output
GREG


, 。 ,
, 。
 1 #include
 2 #include
 3 using namespace std;
 4 char s[14];
 5 char a[]= {"22233344455566670778889990"};
 6 int main()
 7 {
 8     FILE *fp;
 9     char x[14];
10     int flag,i;
11     int counts=0;
12     scanf("%s",s);
13     fp=fopen("dict.dic","r");
14     while(fscanf(fp,"%s",x)!=EOF)
15     {
16         flag=0;
17         if(strlen(s)==strlen(x))///    
18         {
19             for(i=0; i)
20             {
21                 if(s[i]!=a[x[i]-'A'])
22                 {
23                     flag=1;
24                     break;
25                 }
26             }
27             if(!flag)
28             {
29                 printf("%s
",x); 30 counts++; 31 } 32 } 33 } 34 if(!counts) 35 { 36 printf("NONE
"); 37 } 38 return 0; 39 }

 



転載先:https://www.cnblogs.com/wkfvawl/p/9609479.html