1. Pascal / Говнокод #5042

    +97

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    var sum,x1,x2,y1,y2,i,k,l,m,n:longint;
    a:array[1..1000,1..2] of longint;
    b:array[1..100,1..100] of longint;
    
    procedure ws(x,y,c:longint);
    var k:longint;
    begin
      if (not((x-2<1)or(y-1<1)or(x-2>n)or(y-1>N))and(b[x-2,y-1]=0)) then begin inc(m);a[m,1]:=x-2;a[m,2]:=y-1;b[x-2,y-1]:=b[x,y]+1;end;
      if (not((x+2<1)or(y-1<1)or(x+2>n)or(y-1>N))and(b[x+2,y-1]=0)) then begin inc(m);a[m,1]:=x+2;a[m,2]:=y-1;b[x+2,y-1]:=b[x,y]+1;end;
      if (not((x-1<1)or(y-2<1)or(x-1>n)or(y-2>N))and(b[x-1,y-2]=0)) then begin inc(m);a[m,1]:=x-1;a[m,2]:=y-2;b[x-1,y-2]:=b[x,y]+1;end;
      if (not((x+1<1)or(y-2<1)or(x+1>n)or(y-1>N))and(b[x+1,y-2]=0)) then begin inc(m);a[m,1]:=x+1;a[m,2]:=y-2;b[x+1,y-2]:=b[x,y]+1;end;
      if (not((x-2<1)or(y+1<1)or(x-2>n)or(y+1>N))and(b[x-2,y+1]=0)) then begin inc(m);a[m,1]:=x-2;a[m,2]:=y+1;b[x-2,y+1]:=b[x,y]+1;end;
      if (not((x+2<1)or(y+1<1)or(x+2>n)or(y+1>N))and(b[x+2,y+1]=0)) then begin inc(m);a[m,1]:=x+2;a[m,2]:=y+1;b[x+2,y+1]:=b[x,y]+1;end;
      if (not((x-1<1)or(y+2<1)or(x-1>n)or(y+2>N))and(b[x-1,y+2]=0)) then begin inc(m);a[m,1]:=x-1;a[m,2]:=y+2;b[x-1,y+2]:=b[x,y]+1;end;
      if (not((x+1<1)or(y+2<1)or(x+1>n)or(y+2>N))and(b[x+1,y+2]=0)) then begin inc(m);a[m,1]:=x+1;a[m,2]:=y+2;b[x+1,y+2]:=b[x,y]+1;end;
    end;
    
    begin
    reset(input,'input.txt');
    rewrite(output,'output.txt');
    read(n);
    read(x1,y1);
    read(x2,y2);
    b[1,1]:=0;
    a[1,1]:=x1;a[1,2]:=y1;
    i:=0;m:=1;l:=1;
    while i<=m do begin inc(i);
      ws(a[i,1],a[i,2],i);
    end;
    write(b[x2,y2]);
    close(input);
    close(output);
    end.

    вот он, венец человеческого ума - рабочий поиск в ширину без использования рекурсии, написал сам, меня очень просили запостить тут))

    Запостил: faraon124, 24 Декабря 2010

    Комментарии (9) RSS

    • А поиск в ширину с рекурсией - это как? Всю жизнь его через очередь писал...
      Ответить
    • Строки 08-15 оформлены не в виде вызовов процедуры, потому что в стеке нет места и время 8 вызовов критично?
      Ответить
      • банально лень такую длинную конструкцию оформлять, лучше копипастнуть (ирония)
        Ответить
    • форматирование жжот напалмом
      Ответить
    • а +2 и -2 зачем
      через один чтоли перескакивать можно?)
      Ответить

    Добавить комментарий