8 Queens Problem C ++

8 Queens Problem C ++
C ++ kann verwendet werden, um sehr komplexe, aber interessante Probleme programmatisch zu lösen. Ein solches entscheidendes Problem in C ++ ist das Problem der N-Queens, bei dem „N“ die Gesamtzahl der Queens auf dem Schachbrett darstellt. Jetzt fragen Sie sich vielleicht, was dieses Problem tatsächlich ist und wie Sie es mit C lösen können++. Sie können die Antworten auf diese Fragen herausfinden, nachdem Sie diesen Artikel durchlaufen haben.

Was ist das 8 -Queens -Problem in C++?

Das Problem des N-Queens oder 8 Queens bezieht.e., Alle Königinnen sollten so intelligent positioniert werden, dass keiner von ihnen in irgendeiner Weise vom anderen angegriffen werden kann.

So lösen Sie das 8 Queens -Problem in C ++ in Ubuntu 20.04?

In diesem Segment werden wir Ihnen das Verfahren zur Lösung des 8 -Queens -Problems in C mitgeben++. Um dieses Ziel zu erreichen. Bevor wir jedoch mit dem Erklären dieses Codes fortfahren, möchten wir Ihnen mitteilen, dass wir diesen Code in kleine Snippets unterteilt haben, um Ihr einfaches Verständnis zu erhalten. Wir haben dieses C ++ - Programm grob in eine Funktion zum Drucken aller verschiedenen Zustände des Schachbretts unterteilt, die die Lösung des 8 Queens -Problems erfüllen, eine Funktion zur Überprüfung, ob eine bestimmte Position sicher ist, die Königin zu platzieren oder nicht, eine Funktion für Lösen des Problems der 8 Queens mit dem Backtracking -Algorithmus und schließlich der Hauptfahrerfunktion. Wir werden alle diese Snippets nacheinander diskutieren.

Im ersten Ausschnitt unseres Codes haben wir nach Einbeziehung der Bibliothek und des Namespace ein Schachbrett mit einer Größe von 10 x 10 in Form eines 2D -Arrays definiert. Dies bedeutet, dass unser Programm in der Lage ist, 10 Queens maximal für die Lösung des Problems der N-Queens in C einzunehmen++. In diesem Artikel befassen wir uns jedoch hauptsächlich mit dem Problem der 8 Queens. Nachdem wir das Schachbrett definiert haben, haben wir unsere "Printboard" -Funktion, die eine Ganzzahl „n“ als Eingabe erfordert, die sich auf die Anzahl der Königinnen bezieht, ich.e., 8 In diesem speziellen Fall. Innerhalb dieser Funktion haben wir eine verschachtelte "für" -Schloop, um das Schachbrett jedes Mal, wenn diese Funktion aufgerufen wird. Dann haben wir einige „Cout“ -Anweisungen zum Drucken angemessener Räume zwischen den verschiedenen Zuständen des gelösten Schachbretts.

Im zweiten Ausschnitt unseres C ++ - Code haben wir die Funktion „ISSAFE“, um zu überprüfen, ob es sicher ist, eine Königin in eine bestimmte Position zu platzieren oder nicht. Mit „sicher“ meinen wir, dass keine andere Königin eine bestimmte Königin vertikal, horizontal oder diagonal angreifen kann. Dann haben wir drei unabhängige „für“ Loops in dieser Funktion, die alle drei Bedingungen getrennt verifizieren. Wenn eine dieser Bedingungen zutrifft, gibt die Funktion „issafe“ „falsch“ zurück, da in diesen Fällen immer eine Chance auf Angriffe besteht. Wenn jedoch all diese Bedingungen falsch werden, i.e., Es gibt keine Chance, an dieser Position vertikal, horizontal oder diagonal an dieser Position zu Angriff zu.e., Es wird sicher sein, eine Königin an die jeweilige Position zu platzieren.

Im dritten Ausschnitt unseres C ++-Code haben wir die Funktion „Lösung“, die die Lösung des Problems der N-Queens durch den Backtracking-Algorithmus entwickelt. Innerhalb dieser Funktion wird die erste Anweisung „If“ verwendet, um zu prüfen, ob die Queen -Nummer der Gesamtzahl der Queens entspricht oder nicht. Wenn diese Anweisung als wahr bewertet wird, wird die Funktion „Printboard“ sofort aufgerufen. Andernfalls wird eine boolesche Variable „Ergebnis“ definiert, deren Ausgangszustand „falsch“ bleibt. Dann haben wir eine andere "für" Schleife, in der wir die Funktion "issafe" für jede der Königinnen iterativ aufrufen, um herauszufinden, ob die angegebene Position sicher ist, um sie zu platzieren oder nicht. Innerhalb dieser Bedingung haben wir eine Rekursion verwendet, um die Backtracking auszuführen, um die Königinnen an den sichersten Positionen zu platzieren, damit sie von keiner anderen Königin angegriffen werden können. Hier wird „1“ darstellen, dass eine Königin an einer bestimmten Position platziert wird, während „0“ alle leeren Positionen des Schachbretts darstellt. Schließlich haben wir die Variable „Ergebnis“ zurückgegeben, um zu informieren, ob die Lösung für die angegebene Anzahl von Königinnen möglich ist oder nicht.

Im letzten Ausschnitt unseres C ++ - Code haben wir die Hauptfahrerfunktion. Der Grund dafür. Sie können diese jedoch überspringen, wenn Sie dies wünschen. Dann haben wir eine Ganzzahl „n“ definiert, die der Anzahl der Königinnen entspricht. Danach haben wir eine Nachricht auf dem Terminal angezeigt, um den Benutzer zu fordern, die Anzahl der Königinnen einzugeben, für die er/sie das Problem der N-Queens lösen möchte. Dann haben wir dies einfach als Eingabe vom Benutzer erhalten. Danach haben wir eine verschachtelte "für" -Schloop, in der wir die "Schachbrett" -Funktion bezeichnet haben. Dann haben wir die Funktion „Lösung“ bezeichnet und ihre Ausgabe in der Variablen „Ergebnis“ gespeichert. Wenn der Wert der Variablen „Ergebnis“ „falsch“ ist, bedeutet dies, dass für die angegebene Anzahl von Königinnen keine Lösung vorhanden ist. Endlich haben wir die Anweisung "Return 0" zum Abwickeln unseres Code.

Um diesen Code zu kompilieren, haben wir den folgenden Befehl verwendet:

$ g ++ 8queens.CPP -o 8quens

Um diesen Code auszuführen, haben wir den folgenden Befehl verwendet:

$ ./8queens

Wir wurden zuerst gebeten, die Anzahl der Königinnen einzugeben, wie im folgenden Bild gezeigt:

Wir haben "8" für unseren speziellen Fall eingegeben, wie im folgenden Bild gezeigt:

Sobald Sie die Anzahl der Queens angeben, werden alle möglichen Lösungen für das Problem der 8 Queens auf dem Terminal angezeigt, wie im folgenden Bild gezeigt:

Um diesen Code für den anderen Fall zu testen, i, ich.e., Die Lösung existiert nicht, wir haben „3“ als die Anzahl der Königinnen bereitgestellt. Dies ist im Bild unten gezeigt:

Wir verstehen, dass für ein 3 x 3 -Schachbrett keine Lösung vorhanden ist. Deshalb haben wir die folgende Ausgabe erhalten:

Abschluss

In diesem Artikel ging es um das Problem der 8 Queens in C ++ in Ubuntu 20.04. Wir haben Ihnen kurz über dieses Problem und alle Bedingungen erklärt, die zufrieden sein müssen, um dieses Problem zu lösen. Danach haben wir Ihnen ein vollwertiges C ++-Programm mit Ihnen geteilt, das dieses Problem für 8 Queens oder bei max. 10 Queens für Sie löst. Darüber hinaus haben wir diesen Code auch für einen Fall getestet, in dem die Lösung für dieses Problem unmöglich ist. Hoffentlich erhalten Sie nach dem Durchlesen dieses Leitfadens ein gutes Verständnis für das berühmte Problem von 8 Queens in C++.