l********r 发帖数: 140 | 1 Given an array (assume numbers, no duplicate),
print all its combinations.
My code clearly generates duplicates. :-(
public static void combination(ArrayList data)
{
combination(data, 0);
}
private static void combination(ArrayList data, int index)
{
if (index >= data.size())
return;
printArrayUpToIndex(data, index);
for (int i=index; i
{
swap(data, index, i);
combination(data, index+1);
}
} | l*****a 发帖数: 14598 | 2 you need to call swap again to go back to original status
for (int i=index; i
{
swap(data, index, i);
combination(data, index+1);
==>
}
【在 l********r 的大作中提到】 : Given an array (assume numbers, no duplicate), : print all its combinations. : My code clearly generates duplicates. :-( : public static void combination(ArrayList data) : { : combination(data, 0); : } : private static void combination(ArrayList data, int index) : { : if (index >= data.size())
| l********r 发帖数: 140 | 3 Still didn't work.
private static void combination(ArrayList data, int index)
{
if (index >= data.size())
return;
for (int i=index; i
{
swap(data, index, i);
printArrayUpToIndex(data, index); // print from item 0 up to
item index
combination(data, index+1);
swap(data, i, index);
}
}
For input 1, 2, 3
Somehow the out put is;
[]
[1]
[12]
[1]
[13]
[]
[2]
[21]
[2]
[23]
[]
[3]
[32]
[3]
[31] |
|