zoukankan      html  css  js  c++  java
  • UVA

    POINT:

      关于表示一个编码:利用code字符数组表示一个编码字符,其中code[len][val]表示长度为len,二进制值为val的字符;

    主程序如下:

     1 #include <iostream>
     2 #include <sstream>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <cmath>
     6 #include <string>
     7 #include <vector>
     8 #include <set>
     9 #include <cctype>
    10 #include <algorithm>
    11 #include <cmath>
    12 #include <deque>
    13 #include <queue>
    14 #include <map>
    15 #include <stack>
    16 #include <list>
    17 #include <iomanip>
    18 
    19 using namespace std;
    20 #define INF 0x7fffffff
    21 #define maxn 1010
    22 typedef unsigned long long ull;
    23 
    24 int code[8][1<<8];
    25 
    26 int main()
    27 {
    28     while(readcodes())
    29     {
    30         //printcodes();
    31         for(;;)
    32         {
    33             int len = readint(3);
    34             if(len == 0)    break;
    35             //printf("len = %d
    ", len);
    36 
    37             for(;;)
    38             {
    39                 int v = readint(len);
    40                 //printf("v = %d
    ", v);
    41                 if(v == (1<<len)-1) break;
    42                 putchar(code[len][v]);
    43             }
    44         }
    45         putchar('
    ');
    46     }
    47     return 0;
    48 }

    其中readcodes()函数用来读取编号,readint()函数用来读取c位二进制字符并转化为整数(val);

    如何处理“编码文本可由多行组成”

     1 bool readcodes()
     2 {
     3     memset(code, 0, sizeof(code));//清空数组
     4     code[1][0] = readchar();//输入开始;单个字符输入
     5     for(int len = 2; len <= 7; len++)
     6     {
     7         for(int val = 0; val < (1<<len)-1; val++)
     8         {
     9             int ch = getchar();
    10             if(ch == EOF)   return 0;
    11             if(ch == '
    ' || ch == '
    ')    return 1;
    12 
    13             code[len][val] = ch;
    14         }
    15     }
    16     return 1;
    17 }
    18 int readint(int c)
    19 {
    20     int v = 0;
    21     while(c--)
    22         v = v*2+readchar()-'0';
    23     return v;
    24 }

    readchar()函数代码如下:

    1 int readchar()
    2 {
    3     for(;;)
    4     {
    5         int ch = getchar();
    6         if(ch != '
    ' && ch != '	')    return ch;
    7     }
    8 }

    另外,Printcodes()函数本身对题目没有要求,但是对于调试代码是有用的。

  • 相关阅读:
    C#生成指定范围内的不重复随机数
    jquery移除元素某个属性
    让html里的js脚本延迟5秒运行
    jquery刷新局部和全页的方法
    jquery旋转插件rotate参数说明
    按照日期生成编号
    ajax请求成功后如何调用bootstrap modal?
    WPF MVVM模式不用Prism
    C#去掉字符串两端空格以及去掉字符串中多余空格保留一个空格
    依赖项属性
  • 原文地址:https://www.cnblogs.com/LLGemini/p/3982072.html
Copyright © 2011-2022 走看看