流压缩算法中的最终独占扫描值会发生什么?
这是挑选所有'A'字符的示例。
序列A:
Input: A B B A A B B A
Selection: 1 0 0 1 1 0 0 1
Scan: 0 1 1 1 2 3 3 3
0 - A
1 - A
2 - A
3 - A
序列B(除了最后一个值以外):
Input: A B B A A B B B
Selection: 1 0 0 1 1 0 0 0
Scan: 0 1 1 1 2 3 3 3
0 - A
1 - A
2 - A
3 - B
显然,第二个例子根据写入这些地址的扫描值进行了一个简单的循环,给出了错误的最终结果。
我在这里缺少什么?
更新
据我了解扫描算法,我会做相当于以下的事情:
for (int i = 0; i < scan.length(); i++)
{
result[scan[i]] = input[i];
}
与此同时,这将涉及散布指令。
答案 0 :(得分:0)
在A之后,你认为至少会有另一个A.因此,你假设序列以A结尾。如果没有,你选错了最后一个字母。
你只需要算上As。不要从1开始。从0开始。只有在找到A时才增加此计数。
或...... 更新:
Input: A B B A A B B A
Selection: 1 0 0 1 1 0 0 1
Scan: 0 1 1 1 2 3 3 3 4
^
0 - A |
1 - A Four elements
2 - A
3 - A
Input: A B B A A B B B
Selection: 1 0 0 1 1 0 0 0
Scan: 0 1 1 1 2 3 3 3 3
^
0 - A |
1 - A Three elements
2 - A