似たような質問がたくさんあることは知っており、何時間も読んでいます。しかし、どれも私の要件を満たしていないようです。
リストのリスト ( list< list < string > >) があります。リストは任意のサイズにすることができます。
例:
私の外側のリストのサイズは: 4
リストの内容
1. list(0) a,b,c size:3
2. list(1) d,b,f,m size:4
3. list(2) x,a size:2
4. list(3) b,e,d,m,a size:5
ここに私の組み合わせがあります
adxb
adxe
adxd (adx) duplicate element will be removed after generating combination
adxm
adxa (adx)
adab (adb)
adae (ade)
...
...すぐ
各リストから 1 つの要素を選択して組み合わせを生成する必要があります。組み合わせの長さは最大 4 (外側のリストのサイズ) になります。組み合わせで同じ要素を取得すると、縮小される場合があります。
私の組み合わせの数は、各内部リストの要素数の積になります。
上記の例では、組み合わせの数は組み合わせになり3x4x2x5=120
ます
私のリストには重複した要素が含まれているため、adab adba がある場合、ここでも重複した組み合わせが得られます。順序は重要ではないため、 adbaは重複しています。
問題は、単純なアプローチを使用して組み合わせを生成することです。外側のリストのサイズが大きくなり、内側のリストにさらに多くの要素が含まれている場合、何百万もの組み合わせを生成することになりますが、1000 または 2000 のみが一意で残りはすべて重複します。
すべての組み合わせを生成する代わりに、一意の組み合わせのみを生成するアルゴリズム的アプローチはありますか?