ВУЗ:
Составители:
Рубрика:
А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова .
// перенос пирамиды из n-1 кольца
// со стержня a на стержень c
HanoiTower(a,c,b,n-1);
// перенос одного кольца
printf("%d->%d\t",a,b);
// еще один рекурсивный вызов функции
// перенос пирамиды из n-1 кольца
// со стержня c на стержень b
HanoiTower(c,b,a,n-1);
}
}
Задача 4. Лабиринт задан в виде прямоугольной матрицы, в которой ис-
пользуются следующие обозначения: 0 – возможен проход, 1 – стена. Даны
координаты позиции путника в лабиринте. Требуется определить, сможет ли
путник выйти из лабиринта. Считается, что путник вышел из лабиринта, если
он находится на первой или последней строке матрицы лабиринта, или на
первом или последнем столбце. Путник может передвигаться по лабиринту,
перемещаясь только по горизонтали или по вертикали.
Алгоритм решения данной задачи связан с использованием рекурсивных
функций. Находясь в некоторой ячейке, путник может двигаться в четырех
направлениях, включая то, откуда путник попал в эту ячейку. Осуществляется
перебор всех этих направлений. Если по направлению можно сдвинуться (со-
седняя ячейка по направлению содержит 0), то делаем шаг по этому направле-
нию. Если ни по одному направлению сдвинуться нельзя (все соседние ячей-
ки содержат 1, кроме той, откуда путник попал в текущую ячейку, или все
пути из соседних ячеек привели в тупик), то осуществляется обратный ход в
ту ячейку, откуда путник попал в текущую. Если в результате работы алго-
ритма, будет осуществлен возврат в начальную ячейку, делается вывод о том,
что путник не может выйти из лабиринта.
# include <stdio.h>
// прототип функции поиска выхода из лабиринта
int Labirint(int** a, int m,int n,int x,int y,
int xprev, int yprev);
void main(void)
{
int m,n,x,y,i,j;
46
А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова .
// перенос пирамиды из n-1 кольца
// со стержня a на стержень c
HanoiTower(a,c,b,n-1);
// перенос одного кольца
printf("%d->%d\t",a,b);
// еще один рекурсивный вызов функции
// перенос пирамиды из n-1 кольца
// со стержня c на стержень b
HanoiTower(c,b,a,n-1);
}
}
Задача 4. Лабиринт задан в виде прямоугольной матрицы, в которой ис-
пользуются следующие обозначения: 0 – возможен проход, 1 – стена. Даны
координаты позиции путника в лабиринте. Требуется определить, сможет ли
путник выйти из лабиринта. Считается, что путник вышел из лабиринта, если
он находится на первой или последней строке матрицы лабиринта, или на
первом или последнем столбце. Путник может передвигаться по лабиринту,
перемещаясь только по горизонтали или по вертикали.
Алгоритм решения данной задачи связан с использованием рекурсивных
функций. Находясь в некоторой ячейке, путник может двигаться в четырех
направлениях, включая то, откуда путник попал в эту ячейку. Осуществляется
перебор всех этих направлений. Если по направлению можно сдвинуться (со-
седняя ячейка по направлению содержит 0), то делаем шаг по этому направле-
нию. Если ни по одному направлению сдвинуться нельзя (все соседние ячей-
ки содержат 1, кроме той, откуда путник попал в текущую ячейку, или все
пути из соседних ячеек привели в тупик), то осуществляется обратный ход в
ту ячейку, откуда путник попал в текущую. Если в результате работы алго-
ритма, будет осуществлен возврат в начальную ячейку, делается вывод о том,
что путник не может выйти из лабиринта.
# include
// прототип функции поиска выхода из лабиринта
int Labirint(int** a, int m,int n,int x,int y,
int xprev, int yprev);
void main(void)
{
int m,n,x,y,i,j;
46
Страницы
- « первая
- ‹ предыдущая
- …
- 44
- 45
- 46
- 47
- 48
- …
- следующая ›
- последняя »
