1

知道要存储的数据由固定数量的唯一值组成(其中顺序很重要),要使用的最佳数据结构是什么?特别是,我试图以最佳方式存储一副 52 张卡片的状态,其中每张卡片由 1 到 52 之间的数字表示。

4

5 回答 5

1

如果您唯一关心的是表达排列(自然顺序),您可以选择阶乘数字系统,它是排列的最小可能表示形式。

顺便说一句:这不是一个非常实用的解决方案;52!大约是 8E67 ;-)

于 2012-04-14T15:38:14.913 回答
1

一个数组/向量会很好地为你做这件事。

您有固定数量的对象(卡片),您可以用整数识别它们,而可能的整数值之间没有间隙。这允许您使用占用连续内存块并允许基于值(索引)直接访问的数据结构,并且访问使用整数值的自然排序——这完全适合数组/向量

于 2012-04-14T15:30:23.963 回答
0

如果您想确保集合中的唯一性,您可以在 Java 中使用LinkedHashSet
,我希望其他语言/库也有类似的

于 2012-04-14T15:32:40.890 回答
0

您只需要一个 226 位整数加上一个编号方案即可将牌组映射到其可能的顺序。

将消息存储在一副卡片中

上面链接的详细解释

key-deck(简单的 Python 代码)

于 2014-01-14T17:26:22.590 回答
0

鉴于顺序很重要并且元素数量固定,那么只需使用一组卡片,如下所示:

Card[] cards = new Card[52];

只需确保从 0 到 51 进行索引,在大多数编程语言中它比从 1 到 52 的索引更简单。

于 2012-04-14T15:35:49.023 回答