Ивт/ 9 класс/ / 30 лабиринт терминатор t101 заблудился в лабиринтах подвальных помещений компании cyberdyne systems. подвал представляет собой прямоугольную площадку размена nxm клеток. каждая клетка может быть проходимой, а может быть непроходимой. у терминатора есть план подвала, в котором проходимые клетки отмечены точками (“.”), непроходимые – иксами (символ “x”), текущее положение терминатора отмечено символом “+”. чтобы организовать поиски выхода, терминатор должен отметить на своем плане все проходимые клетки, в которые он может попасть и подсчитать их количество (включая клетку, на которой он находится в данный момент). он может ходить только по проходимым клеткам, совершая каждый переход на одну клетку вверх, вниз, вправо или влево. при этом он не может выходить за границы заданного прямоугольника. входные данные в первой строке входного файла задается через пробел два числа n и m — размеры подвала, причем 1 ≤ n ≤ 100, 1 ≤ m ≤ 100. в последующих n строках вводится план лабиринта — по m символов в строке. выходные данные в выходной файл выведите единственное число — количество достижимых терминатором клеток. пример входного файла 4 6 .x.x.. xxx.. x.+.x. пример выходного файла 9 используя эту программу var a: array [0..101,0..101] of byte; i,j,n,m,k: byte; c: char; procedure labirint(i,j: byte); begin if 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 readln(n); for i: = 1 to n do begin for j: = 1 to n do begin read(c); case c of '*': a[i,j]: =-1; '.': a[i,j]: =0; '+': a[i,j]: =1; end; end; readln; end; readln(i,j); labirint(i,j); if a[i,j]=0 then inc(k); writeln(k); end. нужно добавить границы
176
381
Ответы на вопрос:
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. инструментарий для дебага оставила. проверяйте значение символов перед стартом
Program project2; {$apptype console} uses sysutils; var n,m,k,c: integer; function nod(x,y: integer): integer; begin if x< > 0 then nod: =nod(y mod x,x) else nod: =y; end; function nok(x,y: integer): integer; begin nok: =(x div nod (x,y))*y; end; begin writeln('enter m, n, k'); write('m = '); readln(m); write('n = '); readln(n); write('k = '); readln(n); c: =nok(k,m); k: =nok(c,n); writeln('nok(m,n,k) = ',k); readln; end.
Популярно: Информатика
-
bratan908.06.2023 01:25
-
Апоппопп11.02.2020 15:52
-
wylia12.06.2022 21:59
-
БадяМэн22.10.2020 12:38
-
yadlos3813.04.2021 01:23
-
Emmaskr15.12.2020 04:56
-
mamrykovaksun11.01.2020 10:52
-
nparshina1404.05.2023 21:22
-
Snihdsfg23.09.2020 10:52
-
Кыкук26.08.2020 15:00