Решите лабиринт

Тема в разделе "C/C++/C#", создана пользователем kmm96, 17 окт 2016.

  1. kmm96

    kmm96 New Member

    Регистрация:
    17 окт 2016
    Сообщения:
    4
    Симпатии:
    0
    у меня один вопрос с помощью этого кода мне нужно запустить программу лабиринт! нужно вывести ходы которые возможны и сам лабиринт в виде матрицы[7.7] 0-пустые ячейки, 1- стена, 2 начальная точка [5.4]
    Код (C):
    const int M = 7, N = 7;
    int LAB[M][N];
    int CX[4], CY[4];
    int L, X, Y, I, J, TRIAL;
    bool YES;
    void TRY(int X, int Y, bool &YES)
    {
      int K, U, V;
      if (X == 1 || X == M || Y == 1 || Y == N) YES = true;
      else
      {
        K = 0;
        do
        {
            ++K;
            U = X + CX[K - 1];
            V = Y + CY[K - 1];
            if (LAB[U - 1][V - 1] == 0)
            {
                ++TRIAL;
                ++L;
                LAB[U - 1][V - 1] = L;
                TRY(U, V, YES);
                if (!YES)
                {
                    LAB[U - 1][V - 1] = -1;
                    --L;
                }
            }
        } while (!(YES || K == 4));
      }
    }
    int main()
    {
      for (J = N - 1; J <= 0; --J)
        for (I = 0; I < M; ++I)
          cin >> LAB[I][J];
      cin >> X >> Y;
      L = 2;
      LAB[X - 1][Y - 1] = L;
      CX[0] = -1; CY[0] = 0;
      CX[1] = 0; CY[1] = -1;
      CX[2] = 1; CY[2] = 0;
      CX[3] = 0; CY[3] = 1;
      YES = false; TRIAL = 0;
      TRY(X, Y, YES);
      if (YES) cout << "Path exists\n";
      else cout << "Path does not exist\n";
    }
    Безымянный.png
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    LAB у вас - это лабиринт.
    Что такое CX и CY? - это тоже глобальные переменные. И это тоже массивы.
     
  3. kmm96

    kmm96 New Member

    Регистрация:
    17 окт 2016
    Сообщения:
    4
    Симпатии:
    0
    это ходы которые он может делать, то есть в четыре разные стороны
     
  4. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Вам нужно запустить из начальной точки поиск в ширину или глубину (в глубину проще). Я бы написал для этого новый код, т.к. переписать ваш сложнее. Однако, выше вы писали:
    Вам нужно именно этот код переработать? - просто этот код ужасен и не понятен.
     
  5. kmm96

    kmm96 New Member

    Регистрация:
    17 окт 2016
    Сообщения:
    4
    Симпатии:
    0
    Это исходник из паскаля переведен, если вам не трудно можете свой написать, буду очень благодарен
     
  6. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Я могу, конечно, свой написать, но все эти алгоритмы уже сотни тысяч раз написаны.
    Например тут есть реализация на С++: http://algolist.manual.ru/games/wavealg.php
     

Поделиться этой страницей