Hallo,
ich hab ein Programm geschrieben das alle Kombinationen eines char Arrays berechnen soll.
Ich hab einen Counter mitlaufen lassen um die Anzahl der berechneten Kombinationen auszugeben. Der Counter kommt auf den Wert: 25.774.704 wenn ich aber die Anzahl der möglichen Kombinationen berechne komme ich auf: 71^4= 25.411.681. Wenn man sich den Programmcode ansieht merkt man das dass Array eigentlich 5 und nicht 4 stellen lang ist, allerdings verwende ich ein Leerzeichen als hilfswert. Kann das sein das dass Leerzeichen auch schuld daran ist dass ich 363.023 Kombinationen zu viel hab?
Zudem ist der Code nicht wirklich performant, hat jemand eine bessere Lösung?
ich hab ein Programm geschrieben das alle Kombinationen eines char Arrays berechnen soll.
Ich hab einen Counter mitlaufen lassen um die Anzahl der berechneten Kombinationen auszugeben. Der Counter kommt auf den Wert: 25.774.704 wenn ich aber die Anzahl der möglichen Kombinationen berechne komme ich auf: 71^4= 25.411.681. Wenn man sich den Programmcode ansieht merkt man das dass Array eigentlich 5 und nicht 4 stellen lang ist, allerdings verwende ich ein Leerzeichen als hilfswert. Kann das sein das dass Leerzeichen auch schuld daran ist dass ich 363.023 Kombinationen zu viel hab?
Zudem ist der Code nicht wirklich performant, hat jemand eine bessere Lösung?
Code:
public class Combinations{
static char[] characters = { ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6',
'7', '8', '9', '0', '@', '§', '$', '%', '&', '/', '(', ')' };
static char[] combination = new char[5];
static int countOfCombinations;
static long currentTimeMillis;
public static void main(String[] args) {
// TODO Auto-generated method stub
currentTimeMillis = System.currentTimeMillis();
calculateCombinations(combination.length);
System.out.println("______________________________________");
System.out.println(characters.length);
System.out.println(countOfCombinations);
System.out.println("The Programm had run: " + (System.currentTimeMillis() - currentTimeMillis));
}
private static void calculateCombinations(int possition) {
possition--;
if(possition>0) {
for(int i = 0; i<characters.length; i++) {
countOfCombinations++;
combination[possition] = characters[i];
System.out.println(new String(combination));
calculateCombinations(possition);
}
}
}
}