Я пытаюсь получить все возможные перестановки ArrayList, которые имеют ту же длину, что и inputListList. То есть ArrayList из 1,2,3 приведет к 123, 132, 213, 231, 321, 312, не включая более короткие перестановки, такие как 1, 2, 12, 13 ... и т. д. Вот код, который у меня есть до сих пор:Получить ArrayList из всех возможных перестановок ArrayList
public void getAllPermutations(ArrayList<coordinate> coords) {
ArrayList<coordinate> sub = new ArrayList<coordinate>();
permutateSub(sub, coords);
}
private ArrayList<ArrayList<coordinate>> permutateSub(ArrayList<coordinate> sub,
ArrayList<coordinate> coords) {
int n = coords.size();
if(n == 0) System.out.println(sub);
else {
if(sub.size()==n) {
System.out.println(sub);
for(int i = 0; i<n; i++) {
ArrayList<coordinate> a = new ArrayList<coordinate>(sub);
a.add(coords.get(i));
ArrayList<coordinate> b = new ArrayList<coordinate>(coords);
b.remove(i);
permutateSub(a, b);
}
}
}
Координата - это класс, который имеет только x, y и посещен для хранения двумерных точек для проекта.
В настоящее время я использую этот код для его печати на консоли, но я также был бы признателен, если бы кто-то мог пролить свет на то, как я буду хранить это в ArrayList>. Благодарю.
Похоже, что это может быть дубликатом http://stackoverflow.com/questions/4240080/generating-all-permutations-of-a-given-string – mkobit
Весёлый, Я вижу декларацию метода 'permutateSub', как будто он должен возвращать объект' ArrayList> ', но я не вижу' return' в любом месте кода функции. –
Ой, моя ошибка. Несмотря на это, он все равно вернет более короткие перестановки. – AHalbert