PDA

Просмотр полной версии : Решение задачки с 6-ю лягушками, которых нужно поменять местами



gorunov
24.06.2008, 09:10
Есть известная задачка про лягушек, которых нужно поменяьт местами [ DEMO (http://www.gorodbereza.ru/index.php?option=com_content&task=view&id=1211&Itemid=265)]

Была сотавлен алгоритм решения этой задачи, основанный на рекурсии:

program lyag;
const
c: array[1..7] of byte=(1,1,1,0,2,2,2);

var
i: byte;
f: text;


function hod: boolean;
var
i,k: byte;
fl: boolean;
c1: array[1..7] of byte;
begin
hod:=false;
if (c[1]=2)and(c[2]=2)and(c[3]=2)and(c[4]=0)and
(c[5]=1)and (c[6]=1)and (c[7]=1) then begin
hod:=true;
writeln (f);
writeln('OK');
halt
end;
for i:=1 to 7 do c1[i]:=c[i];
k:=0;
while (k (k=3)and(c[k-2]=1) then begin
c[k-2]:=0;
c[k]:=1;
writeln;
for i:=1 to 7 do write(f,c[i],' ');
writeln(f);
fl:=hod;
end;
for i:=1 to 7 do c[i]:=c1[i];
k:=0;
while (k=hod;
end;
for i:=1 to 7 do c[i]:=c1[i];
writeln(f);
writeln(f, 'otkat')
end;

begin
assign(f,'out.txt');
rewrite(f);
writeln(f);
for i:=1 to 7 do write(f, c[i],' ');
writeln(f);
hod;
writeln('ERROR');
close(f);
end.