zoj1068P,MTHBGWB

#include<iostream>
#include<string>
#include<cstring>
#include<map>
using namespace std;
int key[100];
string ans;
map <char,int> m;
map <char,string> c;
map <string,char> d;
void set()
{
     m['A']=2;m['B']=4,m['C']=4,m['D']=3,m['E']=1,m['F']=4,m['G']=3;
	 m['H']=4;m['I']=2,m['J']=4,m['K']=3,m['L']=4,m['M']=2,m['N']=2;
	 m['O']=3,m['P']=4,m['Q']=4,m['R']=3,m['S']=3,m['T']=1,m['U']=3;
	 m['V']=4,m['W']=3,m['X']=4,m['Y']=4,m['Z']=4,m[',']=4,m['?']=4,m['_']=4,m['.']=4;

	 c['A']=".-";c['B']="-...",c['C']="-.-.",c['D']="-..",c['E']=".",c['F']="..-.",c['G']="--.";
	 c['H']="....";c['I']="..",c['J']=".---",c['K']="-.-",c['L']=".-..",c['M']="--",c['N']="-.";
	 c['O']="---",c['P']=".--.",c['Q']="--.-",c['R']=".-.",c['S']="...",c['T']="-",c['U']="..-";
	 c['V']="...-",c['W']=".--",c['X']="-..-",c['Y']="-.--",c['Z']="--..",c[',']=".-.-",c['.']="---.",c['?']="----",c['_']="..--";
     
	 d[".-"]='A',d["-..."]='B',d["-.-."]='C',d["-.."]='D',d["."]='E',d["..-."]='F',d["--."]='G';
	 d["...."]='H',d[".."]='I',d[".---"]='J',d["-.-"]='K',d[".-.."]='L',d["--"]='M',d["-."]='N';
	 d["---"]='O',d[".--."]='P',d["--.-"]='Q',d[".-."]='R',d["..."]='S',d["-"]='T',d["..-"]='U';
	 d["...-"]='V',d[".--"]='W',d["-..-"]='X',d["-.--"]='Y',d["--.."]='Z',d[".-.-"]=',',d["---."]='.',d["----"]='?',d["..--"]='_';

     
}

int main()
{
	
   int cas;
   string s;
   set();
   int k=0;
   cin>>cas;
   while(cas--)
   {
        cin>>s;
		k++;
		string ss="",sss="";
		memset(key,0,sizeof(key));
		
		for(int i=0;i<s.size();i++)
		{
			key[i]=m[s[i]];
            ss+=c[s[i]];
			
		}
		
		int sum=0;
		for(int i=s.size()-1;i>=0;i--)
		{
			
			string tmp=ss.substr(sum,key[i]);
             sss+=d[tmp]; 
			sum+=key[i];
		}
		cout<<k<<": ";
		cout<<sss<<endl;
		
		
   }
}
原文地址:https://www.cnblogs.com/sook/p/2020262.html