Hallo Community,
ich bin Java-Wiedereinsteiger und habe im Internet folgenden Coden gefunden. Funktionsweise ist nicht das Problem, sondern die Implemtierung als funktionsfähigen Code in der Class Permute. Wieso funktioniert er nicht - er scheint ein Problem mit List<Integer> l = new ArrayList<Integer>(); zu haben!?
Vielen Dank für eure Hilfe
ich bin Java-Wiedereinsteiger und habe im Internet folgenden Coden gefunden. Funktionsweise ist nicht das Problem, sondern die Implemtierung als funktionsfähigen Code in der Class Permute. Wieso funktioniert er nicht - er scheint ein Problem mit List<Integer> l = new ArrayList<Integer>(); zu haben!?
Java:
import java.util.*;
public class Permute
{
public static void main(String[] args)
{
int n = Integer.parseInt(args[0]);
// make list 1, ..., n
List<Integer> l = new ArrayList<Integer>();
for (int i = 1; i <= n; i++)
{
l.add(i);
}
// list all the permutations
listPermutations(l);
}
/**
* Outputs (to System.out) all the permutations of the integers in the
* given list.
*
* @param l a list of integers
*/
private static void listPermutations(List<Integer> l)
{
permute(l, 0);
}
/**
* Outputs (to System.out) all the permutations of the given list
* of integers that have the same prefix. The common prefix is the
* prefix of the list of length given by the <code>int</code> argument.
*
* @param a list of integers
* @param fixed an integer
*/
private static void permute(List<Integer> l, int fixed)
{
if (fixed >= l.size() - 1)
{
// nothing left to permute --
System.out.println(l);
}
else
{
// put each element from fixed+1...EOL in location fixed in turn
// special case (no swaps) for leaving item in loc fixed as is
permute(l, fixed + 1);
// now try all the other elements in turn
int x = l.get(fixed);
for (int i = fixed + 1; i < l.size(); i++)
{
// swap elements at locations fixed and i
l.set(fixed, l.get(i));
l.set(i, x);
// find all permutations of the elements after fixed
permute(l, fixed + 1);
// put things back the way they were
l.set(i, l.get(fixed));
l.set(fixed, x);
}
}
}
}
Vielen Dank für eure Hilfe