Hallo Leute,
ich bin was programmieren angeht noch eher ein Anfänger und hoffe ihr könnt mir bei einem Problem helfen. Ich versuche gerade ein Problem zu lösen, das sehr ähnlich dem Färbeproblem von Landkarten ist. Also man hat ein 2 dim. Array und man soll jedes benachbarte Feld jeweils anders einfärben. Mein Ansatz ist dabei backtracking, allerdings setze ich wohl den Ansatz meines Professors falsch um, denn es funktioniert nicht ganz.
Das Problem ist, dass er einfach nur durch die rekursiven Aufrufe nach unten geht und da er bis zum Ende immer einfärben kann, läuft dann die Schleife nicht weiter. Ich weiß jetzt nicht genau, wie ich den Algorithmus dazu kriege, für jede Reihe auch durch alle Spalten, also in die Breite zu gehen.
Das ist meine Hauptfunktion:
Für Vorschläge bin ich sehr dankbar. Alle meine Ideen sind bisher im Sand verlaufen...
schonma danke im Vorraus!
ich bin was programmieren angeht noch eher ein Anfänger und hoffe ihr könnt mir bei einem Problem helfen. Ich versuche gerade ein Problem zu lösen, das sehr ähnlich dem Färbeproblem von Landkarten ist. Also man hat ein 2 dim. Array und man soll jedes benachbarte Feld jeweils anders einfärben. Mein Ansatz ist dabei backtracking, allerdings setze ich wohl den Ansatz meines Professors falsch um, denn es funktioniert nicht ganz.
Das Problem ist, dass er einfach nur durch die rekursiven Aufrufe nach unten geht und da er bis zum Ende immer einfärben kann, läuft dann die Schleife nicht weiter. Ich weiß jetzt nicht genau, wie ich den Algorithmus dazu kriege, für jede Reihe auch durch alle Spalten, also in die Breite zu gehen.
Das ist meine Hauptfunktion:
Java:
private boolean complete(int h ){
//fertig?
System.out.println("complete..");
if(h == ROWS)
return true;
boolean success = false;
int b = 0;
//Cloth temp = getCloth(h, b);
while ((b < COLS) && !success){
System.out.println("COLS = "+COLS);
Cloth tempCloth = getCloth(h, b);
System.out.println("b = "+b);
if(isValidPosition(tempCloth, h, b)){
placeCloth(tempCloth, h, b);
success = complete(h+1);
if(!success)
removeCloth(h, b);
}
b++;
System.out.println("b++");
}
return success;
}
Für Vorschläge bin ich sehr dankbar. Alle meine Ideen sind bisher im Sand verlaufen...
schonma danke im Vorraus!
Zuletzt bearbeitet: