是否可以对“压缩”整数进行简单算术(例如加法)?

时间:2011-09-20 12:50:34

标签: c++

我想使用尚未确定的整数压缩/解压缩方法压缩一个整数数组,最初初始化为0。

是否可以使用某种整数压缩方法使用C或C ++准确地增加(+1)压缩整数数组的特定元素?

2 个答案:

答案 0 :(得分:2)

在所有常见的压缩技术中,有两种技术在没有完全解压缩周期的情况下可以在其中使用。

首先,专门为此构建了稀疏数组。对于稀疏数组,通常会将index的映射存储为value。您不存储尚未修改的数组元素,因此如果您的大多数数组为0,则无需存储它。模拟中的许多数组(和矩阵)都很稀疏,而且有大量文献。这里添加一个值只是用[]访问索引并递增 - 如果不存在则访问将创建。

接下来,如果您发现正在使用相同数字的大序列,则运行长度编码也可能有效,但这些“运行”的数字并不完全相同。由于它们不相同,稀疏数组不起作用,RLE是一种解决方案。增加一个数字并不像稀疏那样简单,但基本上如果不是一个运行,你添加并检查是否可以进行新的运行。如果是运行的一部分,则拆分运行。 RLE通常只对视觉数据或某些数学模式有意义。

答案 1 :(得分:1)

如果你的增量方法是:

,你当然可以实现这个
  1. 解压缩整个阵列。
  2. 增加所需的条目。
  3. 再次压缩整个阵列。
  4. 如果你想以较少的愚蠢方式增加,你需要对压缩过程有深入了解,因此我们会给你更多的帮助。