000
03.01.2009, 21:57 Uhr
~loser
Gast
|
hallo,
auch wenn es einigen widerstrebt, hier kurz und knackig: ich krieg die aufgabe nicht gelöst, und habe mittlerweile echt keine lust mehr, da sie mir schon die ganzen weihnachtsferien verdorben hatte und ich jeden abend nur davorhocken kann und nicht weiterkomm.
will mir jemand helfen?
Das Damenproblem Auf einem Schachbrett mit n2 Feldern (n >= 4) sollen n Damen so plaziert werden, dass keine Dame eine andere schlagen kann. Im Schachspiel können Damen waagerecht, senkrecht oder diagonal jeweils beliebig weit schlagen. Das Programm soll einen Backtracking-Algorithmus verwenden: Es wird jeweils eine Dame in die erste Zeile der nächsten freien Spalte gesetzt und überprüft, ob diese Dame eine andere schlagen kann. Wenn nicht, wird die nächste Dame in die nächste Spalte gesetzt und wieder geprüft. Sollte die zuletzt gesetzte Dame jedoch geschlagen werden können, dann wird sie eine Zeile tiefer gesetzt. Wenn sie schon in der untersten Zeile steht, dann wird sie entfernt und die Dame in der Spalte davor eine Zeile tiefer gesetzt. Wenn die n-te Dame gesetzt ist und diese keine andere schlagen kann, ist eine Lösung gefunden. Diese Art der Lösungssuche kann rekursiv durch eine Funktion Versuch programmiert werden, die jeweils eine Dame setzt und sich dann selbst wieder aufruft. Schreiben Sie eine Funktion Versuch, die jeweils eine Dame in die nächste freie Spalte setzt und überprüft, ob sie sicher ist. Außerdem ist natürlich ein kurzes Hauptprogramm zu schreiben, das die Funktion Versuch geeignet aufruft. Geben Sie das Ergebnis am Bildschirm aus! Schreiben Sie das Programm so, daß der benötigte Speicher für das Schachbrett dynamisch allokiert wird. Lesen Sie zu Beginn des Programms die Größe des Schachbretts ein. Versuchen Sie n = 6; 7; 8; 9! Geben Sie allen allokierten Speicherplatz vor Verlassen des Programmes wieder frei! Wieviele verschiedene Lösungen können Sie finden? |