2015-10-30 64 views
-3

我在自己創建一些通用的循環時遇到困難(我的代碼是在java中)。想象一下,我有M字符串的數量列表,每個數組列表s_ix_i成員。我想要生成所有可能的字符串,以便字符串的第一部分來自第一組,字符串的第二部分來自第二組,並且...java中的一般循環生成所有可能的字符串

例如,下面有3個列表編程的時間):

|s_0| = x_0 = 3: [a1, a2, a3]

|s_1| = x_1 = 5: [b1, b2, b3, b4, b5]

|s_2| = x_2 = 2: [c1, c2]

我要生成這些字符串(順序並不重要):

字符串:["a1 b1 c1", "a1 b1 c2", "a1 b2 c1", ...., "a3 b5 c2"]

+0

你想要他們所有的排列? – 3kings

+0

[如何在PHP中生成多個數組中的項目的所有組合]可能的重複(http://stackoverflow.com/questions/8567082/how-to-generate-in-php-all-combinations-of-items-in -multiple-arrays) – Timofey

+1

提示:定義兩組之間的交叉乘積並推廣到三組。 – karakfa

回答

1

您可以使用Guava Sets。例如,這將給出所有組合AAAAAB,..., CCC

final Set<String> set = new HashSet<>(); 
set.add("A"); 
set.add("B"); 
set.add("C"); 
final Set<List<String>> sets = Sets.cartesianProduct(set, set, set); 

在你的情況下,你將不得不通過s_0s_1s_2的參數。

相關問題