UVa-213-信息解码
这题的话,我们只要理解题意,应该就不算很难。
我们可以开一个二维数组,用来存放对应的编码字符,第一个下表是length,第二个下标是value,这样一来,我们在读入数据的时候就进行处理,然后想要使用的时候就可以直接找到。
读完编码头之后,我们就不停地读入每一个小节,直到出现000。读小节的时候,我们不停地读入对应len的整数,然后输出该编码字符,如果值为全一,则该小节结束。
putchar这个函数还挺好用的,还有读入的时候,因为不允许全一,所以就读入到(1<<len)-1以内就可以了。
#include <stdio.h>
#include <string.h>
int readchar()
{
for (;;) {
char ch=getchar();
if (ch!='\n'&&ch!='\r') return ch;
}
}
int readint(int c)
{
int v=0;
while (c--) {
v=v*2+readchar()-'0';
}
return v;
}
char code[8][1<<8];
int readcodes()
{
memset(code,0,sizeof(code));
code[1][0]=readchar();
for (int len=2;len<=7;len++) {
for (int i=0;i<(1<<len)-1;i++) {
char ch=getchar();
if (ch==EOF) return 0;
if (ch=='\n'||ch=='\r') return 1;
code[len][i]=ch;
}
}
return 1;
}
int main()
{
while (readcodes()) {
for (;;) {
int len=readint(3);
if (len==0) break;
for (;;) {
int value=readint(len);
if (value==(1<<len)-1) break;
putchar(code[len][value]);
}
}
putchar('\n');
}
return 0;
}
//for (int len=2;len<=7;len++) {
// for (int i=0;i<(1<<len)-1;i++)
// putchar(code[len][i]);
// putchar('\n');
//}
UVa-213-信息解码的更多相关文章
- UVA 213 信息解码(二进制&位运算)
题意: 出自刘汝佳算法竞赛入门经典第四章. 考虑下面的01串序列: 0, 00, 01, 10, 000, 001, 010, 011, 100, 101, 110, 0000, 0001, …, 1 ...
- UVa 213 信息解码 (模拟 && 二进制)
题意 :对于下面这个字符串 0,00,01,10,000,001,010,011……. 首先是长度为1的串,然后是长度为2的串,以此类推.不存在全为1的串. 你的任务是编写一个程序.首先输入一个代码头 ...
- 把vux中的@font-face为base64格式的字体信息解码成可用的字体文件
在最近移动端项目中用到了vux,感觉用着还习惯,当把vux使用到PC端的时候出现了IE浏览器出现,这样的错误信息: CSS3114: @font-face 未能完成 OpenType 嵌入权限检查.权 ...
- 算法习题---4.4信息解码(UVa213)
一:题目 消息编码方案要求在两个部分中发送一个被编码的消息.第一部分:称为头,包含消息的字符.第二部分包含一个模式 表示信息.你必须写一个程序,可以解码这个消息. (一)题目详细 你的程序的编码方案的 ...
- UVa 213,World Finals 1991,信息解码
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- 【每日一题】 UVA - 213 Message Decoding 模拟解码+读入函数+阅读题
题意:阅读理解难度一道比一道难orz.手摸了好久样例 题解: 读入:大循环用getline读入header顺便处理一下, 里面再写两重循环,外层一次读三个串,内层一次读num个串. 之后就查表,线性 ...
- UVA 213 Message Decoding 【模拟】
题目链接: https://cn.vjudge.net/problem/UVA-213 https://uva.onlinejudge.org/index.php?option=com_onlinej ...
- 4_4 信息解码(UVa213)<二进制:输入技巧与调试技巧>
消息编码方案要求在两个部分中发送一个被编码的消息.第一部分:称为头,包含消息的字符.第二部分包含一个模式 表示信息.你必须写一个程序,可以解码这个消息. 你的程序的编码方案的核心是一个序列的“0和1” ...
- UVa 213 Message Decoding(World Finals1991,串)
Message Decoding Some message encoding schemes require that an encoded message be sent in two part ...
- uva 213 Message Decoding
思路来自紫书...开始时的思路估计100行+,果断放弃!关键:1.正确提取出函数! initmap():初始化字母与整数的映射. returnint(x):向后读取x位,并转换为十进制数返回. ...
随机推荐
- XHTML学习笔记 part1
XHTML: 可扩展超文本标记语言 HTML语言最开始是用来描述文档的结构,如标题,段落等标记,后来HTML有增加了一些控制字体,对齐等方面的标记和属性,这样做的结果是HTML既可以用来描述文档的结构 ...
- linux模拟http请求命令
Http请求指的是客户端向服务器的请求消息,Http请求主要分为get或post两种,在Linux系统下可以用curl和wget命令来模拟Http的请求.下面就来介绍一下Linux系统如何模拟Http ...
- bzoj5148:[BeiJing2018]Kakuro
传送门 有上下界最小费用可行流,行列建边变形. 行列建边相信大家都做过,没做过的可以看一下这个题:bzoj3698XWW的难题,对应的我写的题解题解 这个题需要变形一下,不只是单纯的对行列进行连边,首 ...
- 黑马tomact学习一 tomcat下载 安装和卸载
- 生成Jar包 源码Jar包-字节码Jar包 不可运行Jar包-可运行Jar包
- 使用JMeter上传文件
使用JMeter录制文件上载 创建JMeter测试计划的最简单方法是使用HTTP(s)测试脚本记录器记录相应的请求.JMeter充当代理服务器,捕获Web浏览器与被测应用程序(AUT)之间的所有流量, ...
- tensorflow:实战Google深度学习框架第四章01损失函数
深度学习:两个重要特性:多层和非线性 线性模型:任意线性模型的组合都是线性模型,只通过线性变换任意层的全连接神经网络与单层神经网络没有区别. 激活函数:能够实现去线性化(神经元的输出通过一个非线性函数 ...
- php—Spl库常用数据结构基本用法
数据结构之一 : 栈 //zhan $stack = new SplStack(); $stack->push('data1'); $stack->push('data2'); echo ...
- 个人常用Git操作记录
本地分支与远程分支建立联系 Git - 新建本地分支与远程分支关联问题 查看本地分支与远程分支关系: git branch -vv 当前分支与远程分支建立关系: git branch --set-up ...
- Elasticsearch之探索集群信息
REST API 启动并运行了节点和集群,下一步是了解如何与它进行通信.elasticsearch提供了一个非常全面和强大的REST API,可以使用它与集群进行交付. 使用API完成以下: • 检查 ...