• Message Decoding UVA


    https://vjudge.net/problem/UVA-21383页4-4例题

    主要是考察输入格式的,会用加回车的方式恶心你。

    参照刘汝佳的方法,我用了map来保存每个编码与字符的一一对应的关系,例如“01”——‘C’ 即map["01"]='C';

    感觉这种方式更自然。可能是还没有到第五章讲到,所以他用的数组。

    另外,这个题不能用   关闭io流绑定的方式来加速,虽然没有用printf和scanf但是getchar()和getline()这两个函数是用c语言io流里的,解除绑定后会冲突!->runtime error.

    #include<iostream>
    #include<string>
    #include<map>
    using namespace std;
    
    string S; map<string, char> Book;
    
    void MakeBook()
    {
        int bitnum = 1; int number = 0;
        for (int i = 0; i < S.size(); i++)
        {
            string temp;
            if (number == (1 << bitnum)-1) { bitnum++; number = 0; }
            int bitcnt = bitnum; int t = number;
            while (bitcnt)
            {
                temp+= t / (1 << (bitcnt - 1)) ? '1' : '0';
                t = t % (1<<(bitcnt-1)); bitcnt--;
            }
            Book[temp] = S[i]; number++;
        }
    }
    
    char ReadChar()
    {
        for (;;)
        {
            char c = getchar();
            if (c != '
    '&&c != '
    ') return c;
        }
    }
    
    int ReadInt(int x)
    {
        int t = 0;
        while (x--)
        {
            t = 2 * t + ReadChar() - '0';
        }
        return t;
    }
    
    int main()
    {
        cin.tie(0);
        ios::sync_with_stdio(false);
        
        while (getline(cin, S))
        {
            string output; Book.clear();
            MakeBook();
            for (;;)
            {
                int lengh = ReadInt(3);
                if (lengh == 0) 
                { 
                    getchar(); 
                    break; 
                }
                for (;;)
                {
                    string temp;
                    for (int i = 0; i < lengh; i++) temp += ReadChar();
                    string end(lengh, '1');
                    if (temp == end) break;
                    else output+=Book[temp];
                }
            }
            cout << output << endl;
        }
        return 0;
    }
  • 相关阅读:
    HTML-代码定义
    数组
    for。。。for嵌套if,if嵌套for。
    输入年月日, 判断输入的是否正确
    日期功能
    方程
    5.8 一维数组
    5.9 二维数组
    5.7 类
    5.4穷举,迭代
  • 原文地址:https://www.cnblogs.com/worldcreator-zh/p/10584622.html
Copyright © 2020-2023  润新知