Практикум по курсу "Алгоритмизация и программирование". Часть 2. Андрианова А.А - 48 стр.

UptoLike

А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова .
scanf("%d",&x);
scanf("%d",&y);
if(x>=1 && x<=m && y>=1 && y<=n)
if(a[x-1][y-1]==0)
f=0;
else printf("Путник замурован в стену.\n
Введите координаты внутри
коридора.\n");
else
printf("Введите координаты внутри
лабиринта.\n");
}
x--; y--;
f=Labirint(a,m,n,x,y,x,y);// вызов функции
if(f==1)
printf("Выход есть!!!\n");
else
printf("Выхода нет!!!\n");
for(i=0;i<m;i++)
delete [] a[i];
delete [] a;
}
// определение функции поиска выхода из лабиринта
int Labirint(int** a, int m,int n,int x,int y,
int xprev, int yprev)
{
// отмечаем пройденную ячейку
a[x][y]=2;
// печать координат пройденной ячейки
printf("%d %d\n",x,y);
// условие выхода из рекурсии –
// выход из лабиринта найден
if(x==0 || y==0 || x==m-1 || y==n-1)
return 1;
int f=0;// значение f равно 1, если выход найден, и
// 0, в противном случае
// попытка перейти в ячейку, расположенную внизу
if(a[x+1][y]==0 && !(x+1==xprev && y==yprev))
f=Labirint(a,m,n,x+1,y,x,y); // рекурсивный вызов
48
А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова                    .
                   scanf("%d",&x);
                   scanf("%d",&y);
                   if(x>=1 && x<=m && y>=1 && y<=n)
                        if(a[x-1][y-1]==0)
                             f=0;
                        else printf("Путник замурован в стену.\n
                                       Введите координаты внутри
                                       коридора.\n");
                   else
                        printf("Введите координаты внутри
                                  лабиринта.\n");
            }

            x--; y--;
            f=Labirint(a,m,n,x,y,x,y);// вызов функции
            if(f==1)
                 printf("Выход есть!!!\n");
            else
                 printf("Выхода нет!!!\n");
            for(i=0;i