
Задача №4
Дан лабиринт, оказавшись внутри которого нужно найти выход наружу. Перемещаться можно только в горизонтальном и вертикальном направлениях. Вывести прохождение лабиринта на принтер.
Словесный алгоритм:
Объявляем константы в разделе констант
Объявляем переменные в разделе переменных
Объявляем процедуру для печати найденного пути в лабиринте
Организовываем цикл
Прописываем действия программы для нахождения пути из лабиринта начиная с центра
Используем процедуру вывода на печать найденного пути
Листинг:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
N=11; {размер лабиринта NxN клеток}
type Field=array [1..N,1..N] of Char;
var LAB:Field; X,Y: Integer;
procedure PRINTLAB (LAB: Field);
{печать найденного пути в лабиринте}
var X,Y: Integer;
begin
for X:=1 to N do
begin
for Y:=1 to N do
write (LAB [x,y]);
writeln
end;
Writeln
end; {конец печати}
procedure go (LAB:Field; x,y: Integer);
begin
if LAB [x,y]=' ' {если клетка свободна}
then
begin
LAB [x,y]:='+'; {делается шаг}
if (x=1) or (x=n) or (y=1) or (y=n) {край}
then
PRINTLAB(LAB) {печатается найденный путь}
else
begin {поиск следующего шага}
go (LAB,x+1,y);
go (LAB,x,y+1);
go (LAB,x-1,y);
go (LAB,x,y-1)
end;
LAB [x,y]:=' '{возвращение назад}
end
end; {процедуры go}
begin {основной программы}
{ввод лабиринта}
for x:=1 to N do
begin
for y:=1 to N do
read (LAB [x,y]);
readln
end;
go (LAB,N div 2+1,N div 2+1) {начинаем с середины}
end.
Тестовый контроль
Вопросы |
Варианты ответов |
Правильный ответ |
В чём состоит общий смысл задач поиска? |
Провести общую проверку всех данных сведений |
|
Из данной информации выбрать сведения соответствующие условиям поиска |
+ |
|
Создать отчёт о произведённом анализе информации |
|
|
Определение условия поиска |
|
|
С помощью чего производится полный перебор одномерного массива? |
Условного оператора |
|
Оператора выбора |
|
|
Циклической структуры |
+ |
|
Ручного подбора |
|
|
За счёт чего можно ускорить выполнение программы поиска? |
Исключение повторений |
+ |
Дополнительные процедуры вывода |
|
|
Созданием процедуры повторения |
|
|
Увеличением циклов в программе |
|
|
От чего зависит сложность полного перебора? |
От количества условий в задаче |
|
От объёма информации, в которой ведётся поиск |
|
|
От количества возможных решений задач |
+ |
|
От иных факторов |
|
|
К чему может привести большое количество решений? |
К сбою в работе программы |
|
К неверному итогу программы |
|
|
К ограниченному количеству правильных решений |
|
|
К длительному времени поиска |
+ |