Labyrinthlöser in C++
Maze-Lösungsalgorithmen sind ein klassisches Problem in der Informatik und der künstlichen Intelligenz.
Labyrinthlöser in C++
Der Labyrinth-Lösungsalgorithmus zielt darauf ab, den kürzesten Weg von Anfang bis Ende zu finden, indem er sich nur in die vier Himmelsrichtungen bewegt. Der Algorithmus verwaltet zwei Informationssätze: die offene Liste, die alle Knoten enthält, die noch besucht werden müssen, und die geschlossene Liste, die alle Knoten enthält, die besucht wurden.
Um einen Pfad von einem Knoten zu einem anderen Knoten im Labyrinth zu finden, müssen wir Folgendes tun:
-
Überprüfen Sie, ob ein offener Knoten (links oder rechts) an den aktuellen Knoten angrenzt.
-
Wenn nicht, prüfen Sie, ob ein geschlossener Knoten (links oder rechts) an den aktuellen Knoten angrenzt.
-
Wenn nicht, gehen Sie einen Schritt zurück und wiederholen Sie die Schritte 1 und 2.
Beispiel für den Labyrinthlösungsalgorithmus:
#include <iostream>
using namespace std;
bool demo_maze(char maze[9][9], bool sam[9][9], int x, int y, int u, int v) {
if (x == u && y == v) {
sam[x][y] = true;
for (int t = 0; t <= u; t++) {
for (int f = 0; f <= v; f++) {
cout << sam[t][f] << " ";
}
cout << endl;
}
cout << endl;
return true;
}
if (x > u || y > v) return false;
if (maze[x][y] == 'X') return false;
sam[x][y] = true;
bool right = demo_maze(maze, sam, x, y + 1, u, v);
bool down = demo_maze(maze, sam, x + 1, y, u, v);
sam[x][y] = false;
if (right || down) return true;
return false;
}
int main() {
char maze[9][9] = {"0000", "00X0", "000X", "0X00"};
bool sam[9][9] = {0};
int u = 3, v = 3;
bool ans = demo_maze(maze, sam, 0, 0, u, v);
}
Klicken Sie hier, um die Funktion des Codes wie oben erwähnt zu überprüfen.
Verwendung des Maze Solver in C++
Der Labyrinth-Lösungsalgorithmus kann für viele Zwecke verwendet werden, darunter Schach, Minesweeper und das Finden von Wegen durch Labyrinthe oder andere Hindernisse auf einer Karte. Dieser Algorithmus kann entscheiden, welchen Weg man einschlägt, wenn man sich verirrt hat und nach einem Weg aus einem Wald oder Labyrinth sucht!
Der Labyrinthlösungsalgorithmus wird auch für 2D-Spiele verwendet, würde jedoch aufgrund seiner Rechenkomplexität mehr Zeit in Anspruch nehmen als andere Algorithmen. Es verwendet eine rekursive Funktion, die die Koordinaten des Spielers überprüft und ihn dann zur nächsten Stelle bewegt.
Eine rekursive Funktion ruft sich selbst auf, entweder direkt oder indirekt. Es kann verwendet werden, um Rekursionsprobleme zu lösen, und es kann auch verwendet werden, um Probleme zu lösen, bei denen die Lösung nicht einfach als kurze Schleife ausgedrückt werden kann.
Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.
Facebook