# Combinations Algorithm

Greenhorn
Posts: 14
I have a few Lists of Strings. for example:

List<String> AList contains {"a1","a2","a3","a4"}
List<String> BList contains {"b1","b2","b3"}
List<String> CList contains {"c1","c2","c3","c4","c5"}
List<String> DList contains {"d1","d2"}

so on and so forth. The number of lists is variable and number of Strings in the list is also variable. I want to write a code that returns ALL POSSIBLE combinations under the following conditions:

1) each set contains at least two elements. In this example the each set will contain 2 to 5 elements. - example: {"a1","b1"} or {"c2","b3","d2"}
2) each element in a set is from different lists - example: {"c1","c4"} or {"b1","b2","a4"} both are invalid.
3) each set has unique combination of elements - example: {"a3", "d2", "b4"} is equivalent to {"d2", "a3", "b4"} hence if {"a3", "d2", "b4"} is returned in the results {"d2", "a3", "b4"} should not be returned.

Regards,

Ranch Hand
Posts: 72
You can generate combinations selecting one from each list with a recursive approach (Excluding your first condition; I don't know how you can get a list of 5 elements from 4 lists without duplicates).

Problem:
create a method that accepts a list of lists and returns the combinations as list of lists.
For example, {{1, 2}, {3, 4, 5}} to {{1, 3}, {1, 4}, {1, 5}, {2, 3}, {2,4}, {2,5}}

Algorithm with pseudo code

Turning this into Java statements is straightforward.
Here is the code (Hope you would try your own and would require this only to compare with your solution )

Rob Spoor
Sheriff
Posts: 20661
65
Marimuthu, please LetThemDoTheirOwnHomework. In other words, don't provide full solutions. Your pseudo code should be enough help. I removed the other code.

Ranch Hand
Posts: 72
Right Rob Prime. The pseudo code should do. Just provided the code for reference.