存储排列的最佳方式是什么?

时间:2018-02-21 13:46:48

标签: database math storage

我想知道最有效的方法来存储1到100之间的所有数字排列,达到100 - 198的总和。

因为我认为这将是一个相当大的数字我想问什么是最好的存储方式。

编辑: 我注意到我的问题不是那么清楚......我试着让它变得更好 - 我有一个类“汽车”,它有2个属性:Grade(int)和Type(“Ferari”)。我有一个得到所有组合的代码但是当我有29辆汽车时,排列的数量(或因为有人说排列可能是对这个词的误用而组合)是(2 ^ 29 - 1)这对我来说太大了effecintly。我想知道获得所有组合的最佳方法,其等级总和在100 - 198之间。组合可以是任意长度(即{95,1,2,20}和{99,1,53})和我需要摆脱重复(没有{99,2}和{2,99})。

2 个答案:

答案 0 :(得分:0)

这取决于你最终想要存储数据的精巧程度,但如果你想要一些简单的东西,你可以有一个简单的表,它有一些Permutation ID和与该Permutation相关的值。 (这个解决方案不是一个完整的解决方案,而是我一起扔的东西。)

CREATE TABLE Permutation
(
    PermutationId INT NOT NULL,
    Sort INT NOT NULL, -- If order matters.
    Value INT NOT NULL
)

这取决于你是否需要对数据采取行动,但这很简单。只是因为可能会导致一个数字的大量值,您不希望水平构建表,因此垂直方向将是您的最佳选择。

如果您根本不需要操作数据,那么其他选项可以将数据连接为字符串或XML。

希望至少可以指出你的方向。

答案 1 :(得分:0)

我会将它们存储在二维数组中,这很简单,但不确定这是否是最好的路径。

像这样的东西,数组中的X值被添加到值:

    1   2   3   4   5   6   7   8   9  ....  98  99 100 
[[ 100 100 100 100 100 100 100 100 100 .... 100   0   0 ]
 [   0  99  99  99  99  99  99  99  99 ....  99  99   0 ]
 [   :   :   :   :   :   :   :   :   :        :   :   : ]
 [   0   0   0   0   0   0   0   0   0 ....   0   0   1]]

另一种方法是你可以把它们放到这样的文件中:

1   100
2   100
:   100
98  100
2   99
3   99
:   :
100 1