Hallo!
Ich sitze grade an einer Aufgabe und komme nicht wirklich weiter...
Folgendes:
Auf einer Ablage liegen 4 Bretter der größe nach geordnet (das größte unten). Ein Arbeiter soll jetzt diese Bretter in der gleichen Reihenfolge auf eine andere Ablage legen und bekommt dazu eine Zwischenablage zur Verfügung. Die Bedinungen sind
- Es gibt 3 Ablagen
- Ein großes Brett darf nie auf einem kleineren liegen
- der Arbeiter kann immer nur ein Brett nehmen
Das ist soweit kein Proble und ich hab die Lösung schon vor mir liegen. Jetzt soll ich das ganze in Java umsetzen und am besten rekursiv lösen... Das rekursive ist auch nicht unbedingt ein Problem, nur weiss ich nicht recht, wo ich anetzen soll!
Dazu habe ich bereits folgenden Code, der allerdings noch nicht wirklich rekursiv ist... Wie gesagt ich weiss nicht recht wo ich anfangen soll!
Ich hoffe jemand hat Zeit und Lust mir dabei ein wenig zu helfen!
Gruß manuche
Ich sitze grade an einer Aufgabe und komme nicht wirklich weiter...
Folgendes:
Auf einer Ablage liegen 4 Bretter der größe nach geordnet (das größte unten). Ein Arbeiter soll jetzt diese Bretter in der gleichen Reihenfolge auf eine andere Ablage legen und bekommt dazu eine Zwischenablage zur Verfügung. Die Bedinungen sind
- Es gibt 3 Ablagen
- Ein großes Brett darf nie auf einem kleineren liegen
- der Arbeiter kann immer nur ein Brett nehmen
Das ist soweit kein Proble und ich hab die Lösung schon vor mir liegen. Jetzt soll ich das ganze in Java umsetzen und am besten rekursiv lösen... Das rekursive ist auch nicht unbedingt ein Problem, nur weiss ich nicht recht, wo ich anetzen soll!
- Stapel1 - Stapel2 - Stapel3
ABCD - 0 - 0
ABC - D - 0
AB - D - C
AB - 0 - CD
A - B - CD
AD - B - C
AD - BC - 0
A - BCD - 0
0 - BCD - A
0 - BC - AD
C - B - AD
CD - B - A
CD - 0 - AB
C - D - AB
0 - D - ABC
0 - 0 - ABCD
Dazu habe ich bereits folgenden Code, der allerdings noch nicht wirklich rekursiv ist... Wie gesagt ich weiss nicht recht wo ich anfangen soll!
Code:
public class Test_rekursiv {
static String[] stapel = {"4321", "", ""};
String aktstapel;
static String temp = new String();
public static void main (String[] args){
stapel_rekursiv (0);
}
private static boolean stapel_rekursiv (int field) {
int m = 0;
int n = 0;
do{
if (stapel[2].equals("4321")) return true;
int a = field;
if (stapel[a].length() > 0) {
temp = stapel[a].substring(stapel[a].length() - 1);
for (int z = 0; z <= 2; z++) {
if (z != a){
try{
n = Integer.parseInt(temp);
m = Integer.parseInt(stapel[z].substring(stapel[z].length() - 1));
}catch (StringIndexOutOfBoundsException e){
m = 0;
}
if (m > n || (m < n && m == 0)){
stapel[a] = stapel[a].replaceAll(temp, "");
stapel[z] += temp;
break;
//if (stapel_rekursiv (field + 1)){
//return true;
//}
//stapel[z] = stapel[z].replaceAll(temp, "");
//stapel[a] += temp;
}
}
}
}
}while (testeArray());
return false;
}
private static boolean testeArray(){
for (int i = 0; i < stapel.length; i++){
if (stapel[i].equals("")){
return true;
}
}
return false;
}
}
Ich hoffe jemand hat Zeit und Lust mir dabei ein wenig zu helfen!
Gruß manuche