UVA213----Message Decoding
2016-01-23 14:32
337 查看
由于字符比较少,只有7个,再将每个二进制转换成数值的形式,存到数组的位置。
如样例2 解码key为"S#**\"
code[1][0]对应编码'0'存的字符为'$' code[2][0]对应编码'00'存的字符为'#'
code[2][1]对应编码'01'存的字符为'*' code[2][2]对应编码'10'存的字符为'*'
code[3][0]对应编码'000'存的字符为'\'
第一个位置放长度,第二个放对应编码。
#include<stdio.h>
#include<algorithm>
#include<cmath>
#include<string.h>
using namespace std;
int readchar()
{
for(;;){
int ch=getchar();
if(ch!='\n'&&ch!='\r') return ch;
}
}
int readint(int c)//长度为c
{
int v=0;
while(c--)
{
v=v*2+readchar()-'0';
}
return v;//转换为数值
}
int 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++){
int 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;//对应000
for(;;){
int v=readint(len);
if(v==(1<<len)-1) break;//对应几个1
putchar(code[len][v]);
}
}
putchar('\n');
}
return 0;
}
如样例2 解码key为"S#**\"
code[1][0]对应编码'0'存的字符为'$' code[2][0]对应编码'00'存的字符为'#'
code[2][1]对应编码'01'存的字符为'*' code[2][2]对应编码'10'存的字符为'*'
code[3][0]对应编码'000'存的字符为'\'
第一个位置放长度,第二个放对应编码。
#include<stdio.h>
#include<algorithm>
#include<cmath>
#include<string.h>
using namespace std;
int readchar()
{
for(;;){
int ch=getchar();
if(ch!='\n'&&ch!='\r') return ch;
}
}
int readint(int c)//长度为c
{
int v=0;
while(c--)
{
v=v*2+readchar()-'0';
}
return v;//转换为数值
}
int 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++){
int 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;//对应000
for(;;){
int v=readint(len);
if(v==(1<<len)-1) break;//对应几个1
putchar(code[len][v]);
}
}
putchar('\n');
}
return 0;
}
相关文章推荐
- 10026 - Shoemaker's Problem
- 2015中国城市GDP排名出炉
- HDU 1709 The Balance
- rdd
- Asp.Net MVC3 简单入门详解过滤器Filter
- 0002-Testfs 怎么建立
- Fragment的知识
- Java将GeoHash转化为对应的经纬度坐标实例代码
- Android 几个学习用到的网址
- java中的反射
- Swift快速入门(一)第一个Swift程序
- Swift快速入门(一)第一个Swift程序
- Cookie 和 Session机制详解
- 2015年总结与2016年目标
- 「C语言」「概念」数据类型及混合运算与类型转换
- UI_炫彩方框,旋转跑马灯,炫彩画板
- POJ Human Gene Functions 1080 lcs 变形 DP
- 大数据 深度学习
- x265-1.7版本-encoder/slicetype.h注释
- python开发学习-day04(迭代器、生成器、装饰器、二分查找、正则)