Problem 1968 --HDB3码

1968: HDB3码

"
Time Limit $1$ 秒/Second(s) Memory Limit $512$ 兆字节/Megabyte(s)
提交总数 $1$ 正确数量 $0$
裁判形式 标准裁判/Standard Judge 我的状态 尚未尝试
难度 分类标签 字符串 模拟

villa在学习通信原理课程,其中有一个知识点,即为HDB3编码,她怎么也弄不明白,作为ACMer 你能帮帮她吗?
AMI码就是把单极性脉冲序列中相邻的“1”码(即正脉冲)变为极性交替的正、负脉冲。将“0”码保持不变,把“1”
码变为+1、-1交替的脉冲。如:
           消息码: 1 0 0 0 0  1 0 0 0 0  1  1 0 0 0 0  1  1 
        AMI码:-1 0 0 0 0 +1 0 0 0 0 -1 +1 0 0 0 0 -1 +1
HDB3码(3nd Order High Density Bipolar)的全称是三阶高密度双极性码,它是AMI码的一种改进型,改进目的是为
了保持AMI码的优点而克服其缺点,使连“0”个数不超过3个。其编码规则:
(1)检查消息码中连“0”的个数。当连“0”数目小于等于3时,HDB3码与AMI码一样(“1”交替的变换为“+1”和
“-1”,“0”保持不变)。 
(2)当连“0”数目超过3时,将每4个连“0”化作一小节,定义为“B00V"称为破坏节,其中V称为破坏脉冲,而B称
为调节脉冲; 
(3)V与前一个相邻的非“0”脉冲的极性相同(这破坏了极性交替的规则,所以V称破坏脉冲),并且要求相邻的V码
之间极性必须交替。V的取值为“+1”或“-1”; 
(4)B的取值可选0、+1或-1,(当B取+1的时候用+B表示,B取-1的时候用-B表示,B取0时用0表示)以使V同时满足(3)
中的两个要求; 
(5)除去V码以外的非零码(即1码和B码)的极性交替。
我们规定编码后第一个非零码元为-1,第一个B的值为0。且给定的消息码中第一个码元为1.
例如:
    消息码: 1 000 0  1 000 0  1 1 000 0  000 0  1 1
    AMI码: -1 000 0 +1 000 0 -1+1 000 0  000 0 -1+1
    HDB3码:-1 000-V +1 000+V -1+1-B00-V +B00+V -1+1
(样例解释:根据规则3,第三个V极性为负,而其前面的非零码1的极性为正,所以添加-B调节,使其同时满足规则3的两个条件。)

输入包括多组测试数据,其中第一行为一个整数n表示有n组测试数据(0<n<10000),接下来包括n行数据。每一行的第一个数据整数
m(0<=m<1000)表示的是码元个数,接下来为m个“0”或“1”的整数。

每组测试数据输出一行编码后的HDB3码。

1
22 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1
-1000-V+1000+V-1+1-B00-V+B00+V-1+1

推荐代码 查看1968 所有题解 上传题解视频得图灵币

本题记录 用 户(点击查看用户) 运行号(点击购买题解) 时 间
算法最快[$ $ms]
内存最少[$ $KB]
第一AC
第一挑战 范晋豪@信息与计算科学142 108876 2017-07-02 23:08:30

赛题来源/所属竞赛 N/A

竞赛编号 竞赛名称 竞赛时间 访问比赛