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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Конь Аттилы
сообщение
Сообщение #1





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

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


На шахматной доске стоят белый конь(44, позиция h[5,7]) и черный король(77, позиция h[6,2]). Некоторые поля доски считаются "горящими", на них конь не может наступать (в моем решение они обозначены 99). Конь должен дойти до короля, повергнуть его и вернуться на свое место.При этом ему запрещается становиться на поля, которые уже пройдены.
У меня получается дойти до короля, но как поставить условие чтобы вернуться обратно додумать пока не получается... Прошу подсказать.
 Program aaa;uses crt;
var i,j,n,n2,a,b,c:integer;
q:boolean;
dx,dy:array[1..8] of integer;
h:array[1..8,1..8] of integer;
s:longint;
procedure try(i,x,y:integer;var q:boolean);
var k,u,v:integer;q1:boolean;
BEGIN k:=0;
repeat k:=k+1; q1:=false;
u:=x+dx[k];v:=y+dy[k];s:=s+1;
if(1<=u)and(u<=n)and(1<=v)and(v<=n)and((h[u,v]=0)or(h[u,v]=77)or(h[u,v]=22)) then
begin
if (h[u,v]<>77)then
h[u,v]:=i else h[u,v]:=77;

if (h[u,v]<>77) then
begin
try(i+1,u,v,q1);
if (q1=false) then h[u,v]:=0;
end
else q1:=true;
end;
until q1 or (k=8);
q:=q1;
END;

begin clrscr; s:=0;t:=false;
dx[1]:=2;dx[2]:=1;dx[3]:=-1;dx[4]:=-2;
dx[5]:=-2;dx[6]:=-1;dx[7]:=1;dx[8]:=2;
dy[1]:=1;dy[2]:=2;dy[3]:=2;dy[4]:=1;
dy[5]:=-1;dy[6]:=-2;dy[7]:=-2;dy[8]:=-1;
writeln('Razmer doski:');
readln(n);
for i:=1 to n do
for j:=1 to n do
h[i,j]:=0;
h[2,1]:=99;h[1,2]:=99;h[2,2]:=99;h[1,3]:=99;h[2,3]:=99;h[1,4]:=99;
h[2,4]:=99;h[1,7]:=99;h[1,8]:=99;h[2,8]:=99;{}h[8,1]:=99;h[4,3]:=99;
h[4,4]:=99;h[4,5]:=99;h[4,6]:=99;h[4,7]:=99;h[4,8]:=99;
h[5,3]:=99;h[5,4]:=99;h[5,5]:=99;h[5,6]:=99;h[5,8]:=99;
h[6,3]:=99;h[6,4]:=99;h[6,6]:=99;
h[7,3]:=99;h[7,8]:=99;{}h[8,3]:=99;h[8,6]:=99;
h[6,2]:=77;
for i:=1 to n do
begin
for j:=1 to n do
if (h[i,j]<10) then
write(' ',h[i,j],' ')
else write(' ',h[i,j],' ');
writeln;writeln;
end;
writeln('Poziciya konya:');
read(i);read(j);writeln;
n2:=n*n;h[i,j]:=44;
try(2,i,j,q);
if q then
for i:=1 to n do
begin
for j:=1 to n do
if (h[i,j]<10) then
write(' ',h[i,j],' ')
else write(' ',h[i,j],' ');
writeln;writeln;
end
else writeln('no path');writeln;
for i:=1 to n do
begin
for j:=1 to n do
if (h[i,j]<10) then
write(' ',h[i,j],' ')
else write(' ',h[i,j],' ');
writeln;writeln;
end;
write(s);
readkey;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





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