zoukankan      html  css  js  c++  java
  • poj1051

    模拟

    View Code
    //zoj1068
    #include <iostream>
    #include <string>
    using namespace std;
    
    const    int        maxn=102;
    
    int        N,number[maxn],transnum[26]={2,4,4,3,1,4,3,4,2,4,3,4,2,2,3,4,4,3,3,1,3,4,3,4,4,4};
    string    st,code,translate[26]={".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
    
    void init()
    {
        number[0]=0;
        code="";
    }
    
    string encoder(string st,int *num)
    {
        string    ans="";
        int        len=st.length();
        
        for (int i=0;i<len;i++)
        {
            num[0]++;
            if (st[i]>='A'&&st[i]<='Z')
            {
                ans+=translate[st[i]-65];
                num[num[0]]=transnum[st[i]-65];
                continue;
            }
            switch (st[i])
            {
                case '_'    :ans+="..--"; break;
                case '?'    :ans+="----"; break;
                case ','    :ans+=".-.-"; break;
                case '.'    :ans+="---."; break;
            }
            num[num[0]]=4;
        }
        return ans;
    }
    
    void decoder(string code,int *num)
    {
        string    cut;
    
        for (int i=num[0];i>=1;i--)
        {
            cut.erase();
            cut.insert(0,code,0,num[i]);
            code.erase(0,num[i]);
            for (int j=0;j<26;j++)
                if (translate[j]==cut)
                    cout<<char(j+65);
            if (cut=="..--")
                cout<<"_";
            if (cut=="----")
                cout<<"?";
            if (cut==".-.-")
                cout<<",";
            if (cut=="---.")
                cout<<".";
        }
    }
    
    int main()
    {
    //    freopen("t.txt","r",stdin);
        cin>>N;
        getchar();
        for (int i=1;i<=N;i++)
        {
            init();
            getline(cin,st);
            code=encoder(st,number);
            printf("%d: ",i);
            decoder(code,number);
            cout<<endl;
        }
        return 0;
    }
  • 相关阅读:
    C系统,操作符和词法元素
    值类型和引用类型
    WPF
    C#版本进化
    快速排序
    C语言字符串
    查找
    简单快速排序
    PHP运行出现Notice : Use of undefined constant 的解决办法
    vs2010 修改注释模板
  • 原文地址:https://www.cnblogs.com/rainydays/p/2824618.html
Copyright © 2011-2022 走看看