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

kmm96

New Member
17.10.2016
4
0
#1
у меня один вопрос с помощью этого кода мне нужно запустить программу лабиринт! нужно вывести ходы которые возможны и сам лабиринт в виде матрицы[7.7] 0-пустые ячейки, 1- стена, 2 начальная точка [5.4]
Код:
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
 
R

rrrFer

Гость
#2
LAB у вас - это лабиринт.
Что такое CX и CY? - это тоже глобальные переменные. И это тоже массивы.
 
R

rrrFer

Гость
#4
Вам нужно запустить из начальной точки поиск в ширину или глубину (в глубину проще). Я бы написал для этого новый код, т.к. переписать ваш сложнее. Однако, выше вы писали:
с помощью этого кода мне нужно запустить программу лабиринт!
Вам нужно именно этот код переработать? - просто этот код ужасен и не понятен.
 

kmm96

New Member
17.10.2016
4
0
#5
Вам нужно запустить из начальной точки поиск в ширину или глубину (в глубину проще). Я бы написал для этого новый код, т.к. переписать ваш сложнее. Однако, выше вы писали:

Вам нужно именно этот код переработать? - просто этот код ужасен и не понятен.
Это исходник из паскаля переведен, если вам не трудно можете свой написать, буду очень благодарен
 
R

rrrFer

Гость
#6
Я могу, конечно, свой написать, но все эти алгоритмы уже сотни тысяч раз написаны.
Например тут есть реализация на С++:
Чтобы видеть этот контент необходимо: Войти или зарегистрироваться