用Java生成分区

时间:2008-11-23 06:01:52

标签: java set data-partitioning

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

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

这样做的最佳方法是什么(伪代码或Java)?这个2D数组是存储此类数据的最佳方式吗?我想不出更好的东西,但我猜测那里有什么东西。

2 个答案:

答案 0 :(得分:1)

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

LinkedList<HashSet<Integer>> l;

对于问题:这是SubSet问题,它是NP-Complete,所以我认为没有一种已知的,快速的方法。我没有采用任何优化理论,所以我能做的最好的事情就是只搜索输入的powerset,看看它们的总和是否与输出相匹配。

答案 1 :(得分:0)

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