3

所以我目前正在创建一个变量的可能值域,在我的例子中是一个字符数组。因为我将使用的数据并不是非常小,即使它是,在每个字符槽中都可以接受 2 个值,一个 11 槽数组将有 2^11 个可能的值,这真的不是你想要的数组数量有。

正因为如此,我没有在之后使用约束来减少域,而是尝试基于约束生成域。

约束基本上说明了许多相同字符的块和块的顺序。它看起来像这样:

#,2,G,1

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

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

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

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

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

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

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

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

4

1 回答 1

2

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

于 2013-03-21T23:46:25.890 回答