USACO-Section1.2 Name That Number

来源:互联网 发布:淘宝店铺怎么设置客服 编辑:程序博客网 时间:2024/06/05 03:44

Name That Number

将所给的数字转换为字符串再进行搜索即可。转换过程中需要剪枝,查找是否有以当前字符串开头的姓名。
代码如下:

/*ID: xhzdcyy1PROB: namenumLANG: C++         */#include <iostream>#include <fstream>#include <string>#include<map>#define cin fin#define cout fout using namespace std;ifstream din ("dict.txt");ofstream fout ("namenum.out");ifstream fin ("namenum.in");map<string,bool> mm;string m[5000];bool flag = false;char b[15];char c[10][3]={'0','0','0',              '0','0','0',              'A','B','C',              'D','E','F',              'G','H','I',              'J','K','L',              'M','N','O',              'P','R','S',              'T','U','V',              'W','X','Y'};bool check(int n){    for(int i=0;i<5000;i++){        int k=0;        for(k=0;k<n;k++){            if(m[i][k]!=b[k]){                break;            }        }        if(k==n) return true;    }    return false;}void func(string a,int n){    if(!check(n)) return;    if(n==a.size()){        string tmp="";        for(int i=0;i<n;i++){            tmp=tmp+b[i];        }        if(mm[tmp]){            cout<<tmp<<endl;            flag=true;        }        return;    }    else{        for(int i=0;i<3;i++){            b[n]=c[a[n]-'0'][i];            func(a,n+1);        }    }   }int main(){    string dic;    int ccc=0;    while(din>>dic){        m[ccc++]=dic;        mm[dic]=true;    }    string a;    cin>>a;    func(a,0);    if(!flag) cout<<"NONE"<<endl;    return 0; }
原创粉丝点击