信息解码, 紫书P83UVa213(进制转换非常经典的题目)
2017-09-01 20:26
169 查看
知识漏洞:在cin,%s等等字符串输入状态下,保存在字符数组中的字符串是以‘/0’结尾,输入到缓冲区的‘/n’会被自动忽略。而getchar()函数会逐个字符读取,字符串结尾直接读取‘/n’,无‘/0’。
// UVa213 Message Decoding // Rujia Liu #include<stdio.h> #include<string.h> //排除换行回车的逐个字符读取,本题的思路基础 int readchar() { for(;;) { int ch = getchar(); if(ch != '\n' && ch != '\r') return ch; } } //指定读取任意位数的二进制串并自动转换至十进制 int readint(int c) { int v = 0; while(c--) v = v * 2 + readchar() - '0' 4000 ; 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; for(;;) { int v = readint(len); if(v == (1 << len)-1) break; putchar(code[len][v]); } } putchar('\n'); } return 0; }
相关文章推荐
- 生产者消费者问题 这是一个非常经典的多线程题目,题目大意如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个有多个缓冲区的缓冲池,生产者
- 生产者消费者问题 这是一个非常经典的多线程题目,题目大意如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个有多个缓冲区的缓冲池,生产者
- ASP.NET面试题目大全(非常经典、吐血推荐)
- 生产者消费者问题 这是一个非常经典的多线程题目,题目大意如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个有多个缓冲区的缓冲池,生产者
- 非常经典的C语言趣味题目
- 算法之路二:刘汝佳算法竞赛入门经典 信息解码 UVA213
- 搜狗在线测评题目信息编码与解码
- hdoj 4421 Bit Magic 【2-sat 经典题目】
- 找到一个在上海租房非常不错的网站 - 一步租房网,推荐推荐,综合了赶集,58同城,搜房,安居客等所有的信息
- 经典算法题目——最长公共子序列问题
- 成为Java高手的25个学习目标--非常经典
- poj 1170 Shopping Offers 动态规划绝对经典题目
- dedecms标签大全(非常经典)
- 30个非常流行的提示信息插件(jQuery Tooltip Plugin)
- codeforces 840 C. On the Bench(多重集合的交错排列经典题目)
- 100条经典C语言笔试题目
- 经典的机器学习方面源代码库(非常全,数据挖掘,计算机视觉,模式识别,信息检索相关领域都适用的了)
- 十个利用矩阵乘法解决的经典题目
- 非常经典的JAVA编程题(兔子规律)
- js的一道经典题目