【发布时间】:2014-02-20 09:50:04
【问题描述】:
以下是我的场景:
我必须保留扩展 ASCII 的所有 3 字节组合,如下所示:
{ { (a,a,a),(a,a,b),..........(z,z,z) } }
所有这些组合导致一大组 256*256*256 值
在我的算法中,碰巧在每次迭代后,大集合都会变成这样:
{(a,a,a), (a,a,b)}
{(a,a,c)}
.
.
.
.
{(z,z,z)}
我正在使用一组数组的向量来实现这一点。
vector<set<array<char,3> > > Partition;
使用这个的原因是一个大集合会分成子集。这些子集的数量是未知的,每次迭代后子集的数量可能会增加,因此我使用向量。那么子集不应该包含任何元素两次,因此我使用集合和数组来保留 3 个字符。
使用上述数据结构的问题是计算结果需要花费大量时间。
我需要有关数据结构的建议,这在我的情况下可能更有效。
我的算法的更多解释:
{(a,a,a),(a,a,b)........ (z,z,z)}
所有这些三元组都是无序映射的键。所有这些三元组都对应于这样的某个值
(a,a,a) value=2
(a,a,b) value=2
(a,a,c) value=3
(a,a,d) value=2
.
.
.
.
.
现在,我运行我的算法并想知道基于值可以压缩多少:像这样
{(a,a,a) ,(a,a,b) } value=2
(a,a,c) value=3
{(a,a,d),......} value=2
为什么我必须为 value=2 创建一个单独的子集,因为根据我的算法,只要我之前的值与当前值不同,我就必须创建一个新的集合。
【问题讨论】:
-
希望是256*256*256的一套。
-
您找到问题的答案了吗?
标签: c++ data-structures