IPB
ЛогинПароль:

> Внимание! Действует предмодерация

Подраздел FAQ (ЧАВО, ЧАстые ВОпросы) предназначен для размещения готовых рабочих программ, реализаций алгоритмов. Это нечто вроде справочника, он наполнялся в течение 2000х годов. Ваши вопросы, особенно просьбы решить задачу, не пройдут предмодерацию. Те, кто наполнял раздел, уже не заходят на форум, а с теми, кто на форуме сейчас, лучше начинать общение в других разделах. В частности, решение задач — здесь.

> решения: МАТРИЦЫ, МАССИВЫ. задачи, Фрагменты матриц. Методы сортировки
сообщение
Сообщение #1


...
*****

Группа: Пользователи
Сообщений: 1 347
Пол: Мужской

Репутация: -  3  +


Примеры решения задач...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Помощник капитана
****

Группа: Пользователи
Сообщений: 601
Пол: Мужской
Реальное имя: Артем

Репутация: -  2  +


Разбор задач:
  • 20. Дан лабиринт (матрица), который проограмма должна пройти,с ввыводом результата.
  • 21. Имеется шахматная доска. Конь должен столько ходов, чтобы побывать на всех клетках доски.
  • 22.Расположить 8 ферзей на шахматной доске так, чтобы они не находились друг у друга «под боем».

20. Дан лабиринт (матрица), который проограмма должна пройти,с ввыводом результата.
const n=12;
type
matr = array [1..n] of string;
const mat: matr = ('############',
'#...#......#',
'..#.#.####.#',
'###.#....#.#',
'#....###.#..',
'####.#.#.#.#',
'#..#.#.#.#.#',
'##.#.#.#.#.#',
'#........#.#',
'######.###.#',
'#......#...#',
'############');
var
m: matr;
i: integer;

function step(var m: matr;x,y: integer): boolean;
begin
if m[x][y]<>'.' then begin
step := false; exit; end;
if y=1 then begin
step := true; m[x][y]:='X'; exit; end;
m[x][y]:='X';
if step(m,x+1,y) then begin step := true; exit; end;
if step(m,x,y+1) then begin step := true; exit; end;
if step(m,x-1,y) then begin step := true; exit; end;
if step(m,x,y-1) then begin step := true; exit; end;
m[x][y]:='.';
step := false;
end;

begin
m := mat;
step(m,5,n);
for i:= 1 to n do
writeln(m[i]);
readln;
end.



21. Имеется шахматная доска. Конь должен столько ходов, чтобы побывать на всех клетках доски.
const n=5;
var
desk: array [0..n,0..n] of integer;
nstep: integer;

function step(x,y,nstep: integer): boolean;
const xy: array [1..8,1..2] of integer = ((1,-2),(1, 2),(-1,-2),(-1, 2),(2,-1),(2, 1),(-2, 1),(-2,-1));
var i: byte;
begin
if (nstep = n*n) then begin step:=true; exit; end;
if (x < 0) or (x >= n) or (y < 0) or (y >= n) then begin
step:= false; exit;
end;
if (desk[x,y] <> 0) then begin step := false; exit; end;
desk[x,y] := nstep+1;
for i:= 1 to 8 do
if (step(x+xy[i,1], y+xy[i,2],nstep+1)) then begin
step := true; exit;
end;
desk[x,y] := 0;
step := false;
end;

begin
writeln(step(0,0,nstep));
readln;
end.



22.Расположить 8 ферзей на шахматной доске так, чтобы они не находились друг у друга «под боем».

var
r: array [0..8] of integer;
int: integer;

function test(i: integer): boolean;
var j: integer;
begin
for j:= i-1 downto 0 do begin
if R[i]=R[j] then begin test:=false; exit; end;
if abs(R[i]-R[j])=i-j then test:= false;
end;
end;

function step(i: integer): boolean;
var j: integer;
begin
if i=8 then begin step:=true; exit; end;
for j:= 0 to 7 do begin
r[i]:=j;
if not test(i) then continue;
if step(i+1) then begin step:=true; exit; end;
end;
step:=false;
end;

begin
step(0);
for int:= 0 to 7 do
writeln(r[int]);
readln;
end.



--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 18:38
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name