获取数组中的受限组合

时间:2013-03-21 23:31:15

标签: java arrays

所以我目前正在创建一个变量可能值的域,在我的例子中是一个chars数组。因为我将使用的数据不是很小,即使它是,在每个char槽中可接受2个值,11个槽阵列将具有2 ^ 11个可能的值,这实际上不是你希望的数组的数量。有

由于这个原因而不是使用限制来减少域,我试图根据约束生成域。

约束基本上表示许多相同char的块和块的顺序。它看起来像这样:

#,2,G,1

让我们说这是我的限制,数组的大小为5,空数组看起来像这样

[_][_][_][_][_]

我现在可以通过简单地在约束之后将所有内容堆叠到开头来创建域的一个元素。

[#][#][G][_][_]

然而,现在我需要生成所有其他可能的变体,它们是:

[#][#][_][G][_]
[#][#][_][_][G]
[_][#][#][G][_]
[_][#][#][_][G]
[_][_][#][#][G]

像这样我已成功地将域的元素从2 ^ 5减少到6。

那么问题:是否有人能够为此提供方法?不必是代码,只是一个基本的想法可能就足够了

1 个答案:

答案 0 :(得分:2)

仍然不太确定你在问什么。目前,您似乎有Constraint Satisfaction Problem。或者也许是语法。在任何一种情况下,解决方案都是使用递归算法来枚举每个级别的可能性(数组索引)。