SCU 2014 Training Contest - warmup E、False Sense of Security

1、一个模拟题,背景是莫尔斯电码,仔细一点就行了。

#include<cstdio>
#include<map>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
map<char,string> a;
map<string,char> b;
map<char,int> c;
char s[1010],s1[4040];
int d[1010];
int main(){
 string A(".-");
    a['A']=A;b[A]='A';c['A']=2;
 string B("-...");
 a['B']=B;b[B]='B';c['B']=4;
    string C("-.-.");
 a['C']=C;b[C]='C';c['C']=4;
 string D("-..");
 a['D']=D;b[D]='D';c['D']=3;
    string E(".");
 a['E']=E;b[E]='E';c['E']=1;
 string F("..-.");
 a['F']=F;b[F]='F';c['F']=4;
 string G("--.");
 a['G']=G;b[G]='G';c['G']=3;
    string H("....");
 a['H']=H;b[H]='H';c['H']=4;
 string I("..");
    a['I']=I;b[I]='I';c['I']=2;
    string J(".---");
 a['J']=J;b[J]='J';c['J']=4;
 string K("-.-");
 a['K']=K;b[K]='K';c['K']=3;
 string L(".-..");
 a['L']=L;b[L]='L';c['L']=4;
 string M("--");
 a['M']=M;b[M]='M';c['M']=2;
 string N("-.");
 a['N']=N;b[N]='N';c['N']=2;
    string O("---");
 a['O']=O;b[O]='O';c['O']=3;
 string P(".--.");
 a['P']=P;b[P]='P';c['P']=4;
 string Q("--.-");
 a['Q']=Q;b[Q]='Q';c['Q']=4;
 string R(".-.");
 a['R']=R;b[R]='R';c['R']=3;
 string S("...");
 a['S']=S;b[S]='S';c['S']=3;
 string T("-");
 a['T']=T;b[T]='T';c['T']=1;
 string U("..-");
 a['U']=U;b[U]='U';c['U']=3;
 string V("...-");
 a['V']=V;b[V]='V';c['V']=4;
 string W(".--");
 a['W']=W;b[W]='W';c['W']=3;
 string X("-..-");
 a['X']=X;b[X]='X';c['X']=4;
 string Y("-.--");
 a['Y']=Y;b[Y]='Y';c['Y']=4;
 string Z("--..");
 a['Z']=Z;b[Z]='Z';c['Z']=4;
 string under("..--");
 a['_']=under;b[under]='_';c['_']=4;
 string period("---.");
 a['.']=period;b[period]='.';c['.']=4;
 string comma(".-.-");
 a[',']=comma;b[comma]=',';c[',']=4;
 string ques("----");
 a['?']=ques;b[ques]='?';c['?']=4;
    while(scanf("%s",s)==1){
     int len=strlen(s);
  string ns;
        for(int i=0;i<len;i++){
      string temp=a[s[i]];
            ns+=temp;
   d[i]=c[s[i]];
  }
  for(int i=0;i<len/2;i++)
   swap(d[i],d[len-1-i]);
  int p=0;
  string NS[1010];
        for(int i=0;i<len;i++){
      for(int j=0;j<d[i];j++)
                  NS[i]+=ns[p+j];
   p+=d[i];
            cout<<b[NS[i]];
  }
  cout<<endl;
 }
 return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值