2

我得到一个整数(我们称之为 x),我需要生成一个数组数组,其中每个子数组是一个元素列表,这些元素是给定整数集合中的一个,以及每个子数组的所有元素的总和是 x。数组数组需要包含这种形式的所有可能的不同子数组。

例如,如果 x 是 3 并且可能元素的列表是 {1, 2},我希望生成 {{1, 2}, {2, 1}}。

执行此操作的最佳方法是什么(在伪代码或 Java 中)?这个二维数组是存储此类数据的最佳方式吗?我想不出比这更好的了,但我猜那里有什么东西。

4

2 回答 2

1

对于存储,您可能需要一个 HashSet 的 LinkedList:

LinkedList<HashSet<Integer>> l;

对于问题:这是子集问题,它是 NP-Complete,所以我认为没有已知的快速方法可以解决。我没有采用任何优化理论,所以我能做的最好的就是搜索输入的幂集,看看它们的总和是否与输出匹配。

于 2008-11-23T07:02:43.757 回答
0

由于您不知道“子数组”的大小,我建议您使用 Java 中的集合之一,例如ArrayList<E>.

于 2008-11-23T06:23:20.623 回答