UVA - 213 Message Decoding (输入字符串并对单个字符进行操作的输入输出)
POINT:
关于表示一个编码:利用code字符数组表示一个编码字符,其中code[len][val]表示长度为len,二进制值为val的字符;
主程序如下:
#include <iostream>
#include <sstream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <set>
#include <cctype>
#include <algorithm>
#include <cmath>
#include <deque>
#include <queue>
#include <map>
#include <stack>
#include <list>
#include <iomanip> using namespace std;
#define INF 0x7fffffff
#define maxn 1010
typedef unsigned long long ull; int code[][<<]; int main()
{
while(readcodes())
{
//printcodes();
for(;;)
{
int len = readint();
if(len == ) break;
//printf("len = %d\n", len); for(;;)
{
int v = readint(len);
//printf("v = %d\n", v);
if(v == (<<len)-) break;
putchar(code[len][v]);
}
}
putchar('\n');
}
return ;
}
其中readcodes()函数用来读取编号,readint()函数用来读取c位二进制字符并转化为整数(val);
如何处理“编码文本可由多行组成”
bool readcodes()
{
memset(code, , sizeof(code));//清空数组
code[][] = readchar();//输入开始;单个字符输入
for(int len = ; len <= ; len++)
{
for(int val = ; val < (<<len)-; val++)
{
int ch = getchar();
if(ch == EOF) return ;
if(ch == '\n' || ch == '\r') return ; code[len][val] = ch;
}
}
return ;
}
int readint(int c)
{
int v = ;
while(c--)
v = v*+readchar()-'';
return v;
}
readchar()函数代码如下:
int readchar()
{
for(;;)
{
int ch = getchar();
if(ch != '\n' && ch != '\t') return ch;
}
}
另外,Printcodes()函数本身对题目没有要求,但是对于调试代码是有用的。
UVA - 213 Message Decoding (输入字符串并对单个字符进行操作的输入输出)的更多相关文章
- 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 【模拟】
题目链接: https://cn.vjudge.net/problem/UVA-213 https://uva.onlinejudge.org/index.php?option=com_onlinej ...
- uva 213 Message Decoding
思路来自紫书...开始时的思路估计100行+,果断放弃!关键:1.正确提取出函数! initmap():初始化字母与整数的映射. returnint(x):向后读取x位,并转换为十进制数返回. ...
- 【每日一题】 UVA - 213 Message Decoding 模拟解码+读入函数+阅读题
题意:阅读理解难度一道比一道难orz.手摸了好久样例 题解: 读入:大循环用getline读入header顺便处理一下, 里面再写两重循环,外层一次读三个串,内层一次读num个串. 之后就查表,线性 ...
- uva 213 - Message Decoding (我认为我的方法要比书上少非常多代码,不保证好……)
#include<stdio.h> #include<math.h> #include<string.h> char s[250]; char a[10][250] ...
- JS取出特定字符前后的字符串,针对一串字符里面的单个字符前后的字符串
//针对一串自负里面的单个字符前后的字符串<!doctype html> <html> <head> <meta charset="utf-8&qu ...
- uvaoj 213 - Message Decoding(二进制,输入技巧)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- Base64 报错 的解决办法 (Base-64 字符数组或字符串的长度无效。, 输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符。)
Base64 报错 的解决办法, 报错如下:1. FormatException: The input is not a valid Base-64 string as it contains a n ...
- 利用 Python django 框架 输入汉字,数字,字符,等。。转成二维码!
利用 Python django 框架 输入汉字,数字,字符,等..转成二维码! 模块必备:Python环境 + pillow + qrcode 模块 核心代码import qrcode qr = ...
随机推荐
- linux 安装mongodb
Linux 安装mongodb 1.下载mongodb linux wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon- ...
- NOIP2005 过河
过河 (river.pas/c/cpp) [问题描述] 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正 ...
- 【VMware虚拟机】【克隆问题】在VMware 9.0下克隆CentOS6.5虚拟机无法识别eth网卡
[日期]2014年4月23日 [平台]windows 8 vmware workstation 9.0 centos 6.5 [日志]1)执行ifconfig命令,输出: 2)查看/etc/udev/ ...
- HW6.2
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- daemon not running. starting it now on port 5037 ADB server didn't ACK
adb kill-server adb start-server 显示如下 daemon not running. starting it now on port 5037 ADB server di ...
- 教程-for do、while do 中循环退出
1.注意条件设置 for i:=1 to 10 dobegin if i>5 then begin break; end;end; break 全部continu ...
- hdoj 1405 The Last Practice
The Last Practice Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- vss2005使用
http://www.cnblogs.com/nianyuwen/archive/2012/06/13/2547588.html 签出状态的文件别人无法使用:
- 从Web借鉴UI设计
从Web借鉴UI设计 用户体验已经成为衡量应用软件质量的重要标准.在过去我们可能会惊叹于某个Web应用的华丽界面,现在,随着HTML5的强势登场,各类表现层技术及开发框架的发布,Web与窗体应用的界限 ...
- 拼接json示例 json分页并显示所有页码
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%&g ...