我想知道最有效的方法来存储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})。
答案 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