UVA【213】 Message Decoding

题目链接:UVA【213】 Message Decoding

题意:二进制遍历问题 每组输入给一个编码头 从头开始每个字符对应0 00 01 10 000 001 010 011 100 101 110 0000 0001……后面给一串数字 头三个数表示后面每次读取的长度 全为1时结束一组输入 头三个数为0时编码结束

输入样例:

TNM AEIOU
//对应 T-0 N-00 M-01  -10 A-000 E-001 I-010 O-011 U-100
001(编码长度为1)0(T)1(小节结束)011(编码长度为3)000(A)11
1(小节结束)010(编码长度为2)00(N)10( )01(M)11(小节结束)011(编码长度为3)001(E)1
11(小节结束)000(编码结束)

输出:

TAN ME
解题思路:主要卡在输入 这题输入主要要弄好换行 所以要一个一个字符录 不能getline C的话getchar() C++cin.get() 这里参考了别人思路 写了个新的readchar函数 一切搞定 其次还有二进制的转换问题 决定直接转换成下标 同时用新学的移位 1<< 很方便的处理编码长度 之后直接输出相应二进制对应的符号即可

用C++写的时候对于文件结束没处理好 后来用编码头第一个字符作为循环条件 应该不是最佳方案 不过好歹过了

代码如下:


UVA【213】 Message Decoding_第1张图片

你可能感兴趣的:(编程,C++,csdn,解题报告,uva)