作成した一連の数値をデータとして含むリンクされたリストを使用しています。このリストの可能なすべての 2 セット パーティションをテストする方法を見つける必要があります。そのためには、リストを可能なすべての 2 セットの組み合わせに分割する必要があります。順序は重要ではなく、重複があります。
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] + " ");
}
}
}
}