标签:mes 算法 顺序 第二版 表示 关系 输入 映射关系 sage
题意 编写一个解码程序 对数字串进行解码
输入分为两部分,一部分是编码头,如TNM AEIOU,第二部分是经过编码之后的信息,是0和1的字符串,编码之后的0和1字符串输入可能会多行,最后结尾为000字符串。编码映射规则如下,编码头和0和1字符串对应,对应的0和1字符串为0,00,01,10,000,001,011,100,101,110,0000,0001,...,1101,1110,00000,.......,首先是长度为1的串,然后是长度为2的串,然后是长度为3的串,以此类推,相同长度的串二进制串不能出现都为1的情况,如1,11,111等,相同长度的串的后一个串等于前一个串加1,所以长度为1,2,3的串的数量为1,3,7,即(1<<n)-1,n为字符串长度。映射规则如T对应0,N对应00,M对应01,“ ”对应10,A对应000,如此顺序对应。
输入的第二部分是编码之后的信息,你需要做的就是根据上面的映射关系对二进制信息进行解码,二进制信息编码规则如下,分为很多部分,每个部分首先是三个长度的01编码,如编码头为TAM AEIOU的编码信息0010101100011 1010001001110110011 11000,首先是三个长度为1的串001,表示后面接长度为1的串,0,映射T,1表示长度为1的串结束,再输入三个字符,011,长度为三的串开始000映射A,
此题是算法竞赛入门经典第二版中的例题 第83页 里面有详细的讲解;
标签:mes 算法 顺序 第二版 表示 关系 输入 映射关系 sage
原文地址:http://www.cnblogs.com/ArvinShaffer/p/7619901.html