USACO 1.2 Name That Number

本文介绍了一种通过将电话号码转换为潜在的字母组合来匹配字典中姓名的方法。使用C++实现,程序读取输入文件中的电话号码,并尝试从字典文件中找到相匹配的名字。如果找不到匹配项,则输出'NONE'。
[成绩]



[报告]
    题目没看全,所以没能1次AC……
    这道题目其实就是扫描文件,把所有的可能的东西给输出,就可以拉!
[程序]

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
using namespace std;
ifstream fin ("namenum.in");
ifstream in ("dict.txt");
ofstream fout ("namenum.out");
long n;
long s[15];
char a[128];
string b;
inline void init()
{
    memset(a,0,sizeof(a));
    a['A']=a['B']=a['C']='2';
    a['D']=a['E']=a['F']='3';
    a['G']=a['H']=a['I']='4';
    a['J']=a['K']=a['L']='5';
    a['M']=a['N']=a['O']='6';
    a['P']=a['R']=a['S']='7';
    a['T']=a['U']=a['V']='8';
    a['W']=a['X']=a['Y']='9';
    fin >> b;
    n=b.length();
}
inline void calc()
{
    bool bf=true;
    string ls;
    while (in >> ls)
        if (ls.length()==n)
        {
            try
            {
                for (long i=0;i<n;i++)
                    if (a[ls[i]]!=b[i])
                        throw true;
            }catch(bool flag)
            {
                continue;
            }
            bf=false;
            fout << ls << endl;
        }
    if (bf) fout << "NONE" << endl;
}
int main()
{
    init();
    calc();
    return 0;
}

转载于:https://www.cnblogs.com/klarkxy/archive/2009/12/29/10017180.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值