次のアルゴリズムの問題があります。
入力:配列 A[1...n]、整数 m
長さが範囲 [2...m] のすべての可能なサブ配列を抽出して、これらのサブ配列を使用して元の配列 A を再作成できるようにしたいと考えています。サブ配列には次の制約があります。
- サブ配列の長さの合計は、元の長さと等しくなければなりません (つまり、n)
- 2 つ以上のサブ配列に同じ要素があってはなりません (これは基本的に 1 を言い換えています)
出力:元の配列 A を形成する部分配列のセット
たとえば、A[1...4]、m = 2 があり、配列 A のインデックスを持つ次のサブ配列があります: (1,2) (2,3) (3,4) (1,3) (1, 4) (2,4)
配列の構築は (1,2) (3,4) の組み合わせで可能です。(2,3) (1,4); (2,4) (1,3) など
問題は、アルゴリズムを効果的に実装する方法です(これが使用される場合は特に Java を使用します)。