В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
ткач2
ткач2
17.05.2022 11:13 •  Информатика

Ивт/паскаль/решите лабиринт терминатор t101 заблудился в лабиринтах подвальных помещений компании cyberdyne systems. подвал представляет собой прямоугольную площадку размена nxm клеток. каждая клетка может быть проходимой, а может быть непроходимой. у терминатора есть план подвала, в котором проходимые клетки отмечены точками (“.”), непроходимые –иксами (символ “x”), текущее положение терминатора отмечено символом “+”. чтобы организовать поиски выхода, терминатор должен отметить на своем плане все проходимые клетки, в которые он может попасть и подсчитать их количество (включая клетку, на которой он находится в данный момент). он может ходить только по проходимым клеткам, совершая каждый переход на одну клетку вверх, вниз, вправо или влево. при этом он не может выходить за границы заданного прямоугольника. входные данные в первой строке входного файла задается через пробел два числа n и m — размеры подвала, причем 1 ≤ n ≤ 100, 1 ≤ m ≤ 100. в последующих n строках вводится план лабиринта — по m символов в строке. выходные данные в выходной файл выведите единственное число — количество достижимых терминатором клеток. пример входного файла 4 6 .x.x.. xxx.. x.+.x. пример выходного файла 9

Показать ответ
Ответ:
0674167692
0674167692
04.10.2020 07:30
Const
    max_length = 10;

type
    arr = array [0..max_length, 0..max_length] of byte;

var
    a: arr;
    i, j, n, m, k, x, y: byte;
    c: char;
    f: text;

//procedure PrintMatrix(a: arr);
//begin
//    for var i := 0 to max_length do
//    begin
//        writeln;
//        for var j := 0 to max_length do
//            write(a[i, j], ' ');
//    end;
//    writeln;
//end;

procedure labirint(i, j: byte);
begin
    if (i <= n) and (i >= 0) and (j <= m) and (j >= 0) and (a[i, j] = 0) then begin
        a[i, j] := 1;
        k := k + 1;
        labirint(i, j - 1);
        labirint(i, j + 1);
        labirint(i - 1, j);
        labirint(i + 1, j);
    end;
end;

begin
    Assign(f, 'input.txt');
    Reset(f);
    
    readln(f, n, m);
    for i := 0 to n do
    begin
        for j := 0 to m do
        begin
            read(f, c);
            case c of
                'x': a[i, j] := 2;
                '.': a[i, j] := 0;
                '+':
                    begin
                        x := i;
                        y := j;
                        a[i, j] := 0;
                    end;
            end;
        end;
        readln(f);
    end;
    Close(f);
    
//    PrintMatrix(a);
    
    labirint(x, y);
    writeln(k);
//    PrintMatrix(a);
end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота