Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2006, 16:54   #11
Haret
Пользователь
 
Регистрация: 19.11.2006
Сообщений: 14
Хорошо

Virtson спасибо за решения.

Alar, можно, только ты сначала научись в них играть
Haret вне форума Ответить с цитированием
Старый 20.11.2006, 19:23   #12
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Haret, программа не даст нам ошибиться ...
Alar вне форума Ответить с цитированием
Старый 20.12.2015, 11:36   #13
Otclik
 
Регистрация: 08.11.2015
Сообщений: 4
По умолчанию

Помогите разобраться в процедурах программы которая была написана в этой теме
Фрагмент кода с ппоцедурами
Код:
procedure Clear(); 
  i, j: integer;
begin
  for i:=-1 to 10 do
    for j:=-1 to 10 do
      if (i<1)or(j<1)or(i>8)or(j>8)
        then aa[i, j]:= 1
        else aa[i, j]:= 0;
end;

procedure Push(x,y,a: integer);
var w: Pzap;
begin
  if (aa[x, y]>0) then exit;
  aa[x, y]:= 1;

  New(w);
  w.x:= x;
  w.y:= y;
  w.n:= a;

  z0.pz:= w;
  w.nz:= z;
  w.pz:= nil;
  z0:= w;
end;

function Pop(var x,y,a: integer): boolean;
//var w: Pzap;
begin
  Result:= false;
  //w:= z;
  if z=nil then exit;

  //Ðàçìåùåíèå(w);
  z:= z.pz;
 // if z=nil then exit;
 // z.nz:= w;
 //z.nz:= nil;
  x:= z.x;
  y:= z.y;
  a:= z.n;
  Result:= true;
end;

function Get(x,y: integer): integer;

function TryXY(x,y, a: integer): boolean;
begin
  Result:= (x=p.X)and(y=p.Y);
  if not Result then Push(x, y, a);
end;

var
  n: integer;
  Res: boolean;

begin
  Result:= -1;
  n:= 0;
  new(z0);
  z0.x:= x;
  z0.y:= y;
  z0.n:= 0;
  z0.pz:= nil;
  z0.nz:= nil;
  z:= z0;

  //z:= z0;
  aa[x, y]:= 3;

  Repeat
    inc(n);
    Res:= TryXY(x-1, y-2, n) or
    TryXY(x-1, y+2, n) or
    TryXY(x+1, y-2, n) or
    TryXY(x+1, y+2, n) or
    TryXY(x+2, y+1, n) or
    TryXY(x+2, y-1, n) or
    TryXY(x-2, y+1, n) or
    TryXY(x-2, y-1, n);

    if Res then
    begin
      Result:= n;
      aa[p.x, p.y]:= 4;
      while z<> nil do
      begin
        aa[z.x, z.y]:= 2;
        z:= z.nz;
      end;
      break;
    end;
    if not pop(x,y,n) then break;

  Until z0=nil;

end;

procedure Hod(x,y: integer; a: integer; var r: integer);
begin
  if aa[x, y]>0 then exit;
  if (R>=0)and(a>=R) then
  begin
    aa[x, y]:= 1;
    exit;
  end;

  if (x=p.X)and(y=p.Y) then
  begin
    {if (a<R)or(R<0) then} R:= a;
    aa[x, y]:= 1;
    exit;
  end;

  aa[x, y]:= 1;
  inc(a);
  Hod(x-1, y-2, a, r);
  Hod(x-2, y-1, a, r);
  Hod(x-1, y+2, a, r);
  Hod(x-2, y+1, a, r);
  Hod(x+1, y+2, a, r);
  Hod(x+2, y+1, a, r);
  Hod(x+1, y-2, a, r);
  Hod(x+2, y-1, a, r);
end;
Otclik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачу pantera_88.07 Общие вопросы C/C++ 2 21.02.2008 15:09
Помогите решить задачу. Shady Общие вопросы Delphi 7 10.11.2007 23:09
Помогите решить задачу. Кронос Помощь студентам 3 28.10.2007 14:11
Помогите решить задачу!!! Колян Помощь студентам 3 03.12.2006 22:19