思路来自紫书。。。开始时的思路估计100行+,果断放弃!
关键:
1.正确提取出函数!
   initmap():初始化字母与整数的映射。
   returnint(x):向后读取x位,并转换为十进制数返回。
   enterfilter():获取下个字符,跳过回车。
   所以,
   不断initmap()构建映射表直到结尾;
   对于每组编码表,
   使用returnint(x)一直读取并返回;
   这其中又涉及到回车的干扰,所以使用enterfilter()。
2.逐个字符读取的应用。
   其实还很方便啦~\(≧▽≦)/~。。之前有些畏惧心理~(害怕.jpg)
3.映射表的构建
   使用(对应二进制码)长度与该长度下该字母的序数来定位,可以很方便使用
   很好用!
4.二进制转十进制:乘二加下一位。。。并循环!

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=;
char letter[maxn][<<maxn]; char enterfilter()
{
for(;;)
{
char x=getchar();
if(x!='\n'&&x!='\r')return x;
}
}
int returnint(int x)
{
int ans=;
while(x--)
ans=ans*+enterfilter()-'';
return ans;
}
bool initmap()
{
memset(letter,,sizeof(letter));
letter[][]=enterfilter();/////to filter the line-break remained
if(letter[][]==EOF)return false;
for(int i=;i<=maxn;i++)
for(int j=;j<((<<i)-);j++)
{
char ch=getchar();
if(ch=='\n'||ch=='\r')return true;
letter[i][j]=ch;
}
}
int main()
{
while(initmap())
{
for(;;)
{
int len=returnint();
if(!len)break;
for(;;)
{
int x=returnint(len);
if(x==(<<len)-)break;
printf("%c",letter[len][x]);
}
}
printf("\n");
} return ;
}

uva 213 Message Decoding的更多相关文章

  1. UVa 213 Message Decoding(World Finals1991,串)

     Message Decoding  Some message encoding schemes require that an encoded message be sent in two part ...

  2. UVA 213 Message Decoding 【模拟】

    题目链接: https://cn.vjudge.net/problem/UVA-213 https://uva.onlinejudge.org/index.php?option=com_onlinej ...

  3. UVA - 213 Message Decoding (输入字符串并对单个字符进行操作的输入输出)

    POINT: 关于表示一个编码:利用code字符数组表示一个编码字符,其中code[len][val]表示长度为len,二进制值为val的字符: 主程序如下: #include <iostrea ...

  4. 【每日一题】 UVA - 213 Message Decoding 模拟解码+读入函数+阅读题

    题意:阅读理解难度一道比一道难orz.手摸了好久样例 题解: 读入:大循环用getline读入header顺便处理一下,  里面再写两重循环,外层一次读三个串,内层一次读num个串. 之后就查表,线性 ...

  5. uva 213 - Message Decoding (我认为我的方法要比书上少非常多代码,不保证好……)

    #include<stdio.h> #include<math.h> #include<string.h> char s[250]; char a[10][250] ...

  6. uvaoj 213 - Message Decoding(二进制,输入技巧)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  7. Message Decoding UVA - 213

     Some message encoding schemes require that an encoded message be sent in two parts. The fifirst par ...

  8. 【例题 4-4 uva 213】Message Decoding

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 输入的二进制长度最长为7 所以得开个sta[7][2^7]的样子才存的下所有的字符的.. 定义这么一个数组当字典. 然后一个字符一个 ...

  9. UVa 213,World Finals 1991,信息解码

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

随机推荐

  1. .NET下载文件报错System.UnauthorizedAccessException的解决方法

    假设VS代码对应路径为E:\Projects\Web1,在VS用“发布Web”的方式发布后的路径为E:\Site\Web1.在IIS新建2个站点,站点A指向E:\Projects\Web1,站点B指向 ...

  2. 远程调试 ASP.NET MVC 项目

    Visual Studio 支持从一台计算机到另一台设备的远程调试.进行远程调试时,主机可以是任何支持 Visual Studio 的平台.远程设备可以是 x86.x64 或 ARM 平台. 本文将指 ...

  3. scss编译

    SASS?SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护. sass有两种后缀名文件: sass(不使用大括号和分号)---不建议使用 ...

  4. Spring MVC Rest服务 返回json报406错误的解决办法

    @ResponseBody & @RequestBody @RequestBody 将 HTTP 请求正文插入方法中,使用适合的HttpMessageConverter将请求体写入某个对象. ...

  5. Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式

    android线程池的理解,晚上在家无事 预习了一下android异步加载的例子,也学习到了一个很重要的东东 那就是线程池+缓存  下面看他们的理解.[size=1.8em]Handler+Runna ...

  6. wmware 怎么 跟主机相互通信

    VMnet1和VMware8其实就是软件模拟出来的两块网卡提供DHCP服务,两块网卡对应VMware的两种不同的模式VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转 ...

  7. Java双循环break的用法

    break只跳出当前循环,也就是内循环,如果想跳出外循环有两种办法:1:for(int i = 0;i<9;i++){ //用两个breakfor(int j = 0;j<8;j++){b ...

  8. Python常用内置函数总结

    一.数学相关 1.绝对值:abs(-1)2.最大最小值:max([1,2,3]).min([1,2,3])3.序列长度:len('abc').len([1,2,3]).len((1,2,3))4.取模 ...

  9. 解决eclipse之ADT与SDK版本不一致问题

    This Android SDK requires Android Developer Toolkit version … .Please update ADT to the latest versi ...

  10. [HTML/HTML5]7 使用列表

    7.1  在Web页面中使用有序.无序.定义列表 (1)有序列表 有序列表中的每一个列表项之前,都以一个数字或字母作为编号. <ol> <li>树莓</li> &l ...