Насколько я понимаю, вы хотите сгенерировать все перестановки k
элементов из List
длины n
, где n >= k
.
static <E> void permK(List<E> p, int i, int k)
{
if(i == k)
{
System.out.println(p.subList(0, k));
return;
}
for(int j=i; j<p.size(); j++)
{
Collections.swap(p, i, j);
permK(p, i+1, k);
Collections.swap(p, i, j);
}
}
Тест:
public static void main(String[] args)
{
permK(new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)), 0, 3);
}
Выход:
[1, 2, 3]
[1, 2, 4]
[1, 2, 5]
[1, 3, 2]
[1, 3, 4]
[1, 3, 5]
[1, 4, 3]
[1, 4, 2]
[1, 4, 5]
[1, 5, 3]
<snip>
[5, 3, 1]
[5, 4, 3]
[5, 4, 2]
[5, 4, 1]
[5, 1, 3]
[5, 1, 4]
[5, 1, 2]