我正在使用我创建的链接列表,其中包含一组数字作为数据。我需要找到一种方法来测试此列表中每个可能的两组分区的某些内容,为此,我需要将列表分解为每个可能的两组组合。顺序不重要,会有重复。
For instance, for a list of numbers {1 4 3 1}, the possible splits are
{1} and {4, 3, 1}
{4} and {1, 3, 1}
{3} and {1, 4, 1}
{1} and {1, 4, 3}
{1, 4} and {3, 1}
{1, 3} and {4, 1}
{1, 1} and {4, 3}
包含 4 个数字的列表并不难,但随着列表变大,事情变得更加复杂,而且我很难看到一个模式。谁能帮我找到一个算法?
编辑:
抱歉,我没看到问题。这是我到目前为止所尝试的。我的循环结构是错误的。当我在尝试常规数组后弄清楚我在做什么时,我将扩展算法以适合我的链表。
public class TwoSubsets
{
public static void main(String[] args)
{
int[] list = {1, 3, 5, 7, 8};
int places = 1;
int[] subsetA = new int[10];
int[] subsetB = new int[10];
for (int i = 0; i < list.length; i++)
{
subsetA[i] = list[i];
for (int current = 0; current < (5 - i ); current++)
{
subsetB[current] = list[places];
places++;
}
System.out.print("subsetA = ");
for (int j = 0; j < subsetA.length; j++)
{
System.out.print(subsetA[j] + " ");
}
System.out.println();
System.out.print("subsetB = ");
for (int k = 0; k < subsetB.length; k++)
{
System.out.print(subsetB[k] + " ");
}
}
}
}