问题 2495 --HDB3码

2495: HDB3码

题目描述

  

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 复制
1
22 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1
输出#1 复制
-1000-V+1000+V-1+1-B00-V+B00+V-1+1

提示

序号 标题 作者 发表时间 费用 订购数 操作