C++ の迷路ソルバー

Muhammad Adil 2023年12月11日
  1. C++ の迷路ソルバー
  2. C++ での Maze Solver の使用
C++ の迷路ソルバー

迷路を解くアルゴリズムは、コンピューター サイエンスと人工知能の古典的な問題です。

C++ の迷路ソルバー

迷路を解くアルゴリズムは、コンパスの 4つの方向にのみ移動して、最初から最後までの最短経路を見つけることを目的としています。 アルゴリズムは、まだ訪問されていないすべてのノードを含むオープン リストと、訪問されたすべてのノードを含むクローズ リストの 2つの情報セットを維持します。

迷路内のあるノードから別のノードへのパスを見つけるには、次のことを行う必要があります。

  • 開いているノードが現在のノードに隣接 (左または右) しているかどうかを確認します。
  • そうでない場合は、閉じたノードが現在のノードに隣接 (左または右) しているかどうかを確認します。
  • そうでない場合は、1つ前の手順に戻り、手順 1 と 2 をもう一度実行します。

迷路解決アルゴリズムの例:

#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);
}

ここをクリック 上記のコードの動作を確認します。

C++ での Maze Solver の使用

迷路解決アルゴリズムは、チェス、マインスイーパ、マップ上の迷路やその他の障害物を通る経路の検索など、多くの目的に使用できます。 このアルゴリズムは、道に迷って森や迷路から抜け出す方法を探しているときに、進むべき道を決定することができます!

迷路を解くアルゴリズムは 2D ゲームにも使用されますが、計算が複雑なため、他のアルゴリズムよりも時間がかかります。 再帰関数を使用して、プレーヤーの座標を確認し、次の場所に移動します。

再帰関数は、直接的または間接的に自分自身を呼び出します。 再帰の問題を解くのに使えますし、解が短いループとして表現しにくい問題を解くのにも使えます。

著者: Muhammad Adil
Muhammad Adil avatar Muhammad Adil avatar

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

関連記事 - C++ Algorithm