ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1008. Кодирование изображений

I think mine is right,butЎ­Ў­,please help me!
Послано fyrs 26 июл 2003 20:37
this is my program:
type node=record x,y:shortint; end;
var n:byte;
    a:array[1..10,1..10] of record
                              visited:boolean;
                              black:boolean;
                            end;
    l,b:byte;
    f:array[1..4] of node;
    ch:array[1..4] of char;
procedure init;
  var i:byte;
      tx,ty:byte;
begin
  readln(n);
  fillchar(a,sizeof(a),0);
  l:=11;
  for i:=1 to n do begin
    readln(tx,ty);
    a[tx,ty].black:=true;
    if tx<l then begin l:=tx; b:=ty end
    else if (tx=l) and (ty<b) then b:=ty;
  end;

  f[1].x:=1;f[1].y:=0;
  f[2].x:=0;f[2].y:=1;
  f[3].x:=-1;f[3].y:=0;
  f[4].x:=0;f[4].y:=-1;
  ch[1]:='R';ch[2]:='T';ch[3]:='L';ch[4]:='B';

end;

procedure bfs(x,y:byte);
  var open,closed:byte;
      bf:array[1..100] of node;
      i,tx,ty:shortint;
begin
  open:=1;closed:=0;
  bf[1].x:=x;bf[1].y:=y;
  a[x,y].visited:=true;
  repeat inc(closed);
    for i:=1 to 4 do begin
      tx:=bf[closed].x+f[i].x;
      ty:=bf[closed].y+f[i].y;
      if (tx in [1..10]) and (ty in [1..10])
         and (a[tx,ty].black) and (not a[tx,ty].visited)
      then begin
             inc(open);
             bf[open].x:=tx;bf[open].y:=ty;
             a[tx,ty].visited:=true;
             write(ch[i]);
           end;
    end;
    if closed<open then writeln(',') else writeln('.');
  until closed>=open;
end;

begin
  init;
  writeln(l,' ',b);
  bfs(l,b);
end.